Получение ошибки «Несанкционировано» при попытке продлить подписку на Microsoft Graph API через C#/.NET.C#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Получение ошибки «Несанкционировано» при попытке продлить подписку на Microsoft Graph API через C#/.NET.

Сообщение Anonymous »

В настоящее время пытаюсь продлить подписку на Graph API программным способом. Я дважды проверил правильность идентификатора клиента, идентификатора подписки, секрета клиента и идентификатора клиента, но при запуске кода получаю следующую ошибку:

Результат: не удалось продлить подписку с идентификатором подписки IvyRehab.Workday.Automations.Functions.Services.GraphCredentials
Исключение: Microsoft.Graph.Models.ODataErrors.ODataError: Operation: Update; Исключение: [Код состояния: Несанкционировано; Причина: Несанкционировано; Сообщение: Подписка не принадлежит приложению.]

Вот код, который я пытаюсь запустить

Код: Выделить всё

public async Task RenewSubscription(Subscription subscription)
{
if (subscription.ExpirationDateTime is null)
throw new ArgumentNullException(nameof(subscription.ExpirationDateTime));

try
{
await graphServiceClient.Subscriptions[_graphCredentials.SubscriptionId].PatchAsync(subscription);
_logger.LogInformation("Subscription has been renewed to {newDate}", subscription.ExpirationDateTime.ToString());
}
catch (Exception exception)
{
_logger.LogError(exception, "Failed to renew subscription with subscription id {subscriptionId}", _graphCredentials);
}
}
У меня есть разрешения User.Read и Subscription.Read.All, оба включены в разрешениях API портала Azure.
Что мне здесь нужно настроить?
Я пробовал настроить разрешения, настроить ключ доступа и т. д.
Я могу вытащить информацию о подписке и других объектах, таких как пользователи, но я сталкиваюсь с этой проблемой только при попытке исправить дату истечения срока действия.
РЕДАКТИРОВАТЬ 27.09.24
Я попытался получить все подписки, связанные с предоставленными мной учетными данными, и получил взамен пустой список.

Код: Выделить всё

 public class TestRenewal
{
private readonly ILogger _logger;
private readonly IGraphSubscriptionService _graphSubscriptionService;
private readonly IUserService _userService;
private readonly GraphServiceClient _graphServiceClient;

public TestRenewal(
ILogger logger,
IGraphSubscriptionService graphSubscriptionService,
IUserService userService,
IOptions graphCredentials)
{
_logger = logger;
_graphSubscriptionService = graphSubscriptionService;
_userService = userService;

var credentials = graphCredentials?.Value ?? throw new ArgumentNullException(nameof(graphCredentials));
var clientSecretCredential = new ClientSecretCredential(
credentials.TenantId,
credentials.ClientId,
credentials.ClientSecret
);

_graphServiceClient = new GraphServiceClient(clientSecretCredential, new[] { "https://graph.microsoft.com/.default" });
}

[Function("Function")]
public async Task Run([HttpTrigger(AuthorizationLevel.Function, "get", "post")] HttpRequest req)
{
try
{
_logger.LogInformation("Getting subscriptions");
var result = await _graphServiceClient.Subscriptions.GetAsync();
_logger.LogInformation("Subscriptions retrieved");
_logger.LogInformation(JsonConvert.SerializeObject(result));
return new OkObjectResult(result);
}
catch (Exception ex)
{
_logger.LogError(ex, "Failed to fetch subscriptions.");
return new OkObjectResult("");
}
}
}
Журналы:

Код: Выделить всё

[2024-09-27T15:13:41.915Z] {"Value":[],"AdditionalData":{"@odata.context":"https://graph.microsoft.com/v1.0/$metadata#subscriptions"},"BackingStore":{"ReturnOnlyChangedValues":false,"InitializationCompleted":true},"OdataCount":null,"OdataNextLink":null}
[2024-09-27T15:13:43.914Z] Executing OkObjectResult, writing value of type 'Microsoft.Graph.Models.SubscriptionCollectionResponse'.
Я дважды проверил учетные данные, и все они верны.
Связано ли это с тем, где находится эта подписка? Это подписка, которую я создал несколько дней назад. Это тема для партнеров, см. скриншоты.
Изображение

Изображение


Подробнее здесь: https://stackoverflow.com/questions/790 ... subscripti
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»