Результат: не удалось продлить подписку с идентификатором подписки 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);
}
}
Что мне здесь нужно настроить?
Я пробовал настроить разрешения, настроить ключ доступа и т. д.
Я могу вытащить информацию о подписке и других объектах, таких как пользователи, но я сталкиваюсь с этой проблемой только при попытке исправить дату истечения срока действия.
РЕДАКТИРОВАТЬ 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