Я пытаюсь сделать следующее:
var confidentialClientApplication = ConfidentialClientApplicationBuilder
.Create(APP_ID)
.WithTenantId(AzureConfiguration.TenantId)
.WithClientSecret(APP_SECRET)
.Build();
var authProvider = new ClientCredentialProvider(confidentialClientApplication);
var client = new GraphServiceClient(GRAPH_URL, authProvider);
subscription = await client.Subscriptions.Request().AddAsync(new Subscription
{
ChangeType = "updated",
NotificationUrl = notificationUrl,
Resource = $"/groups/{CONTENT_GROUP_ID}/drive/root",
ExpirationDateTime = DateTimeOffset.UtcNow.AddMinutes(SubscriptionLength),
ClientState = Guid.NewGuid().ToString()
});
Группа содержимого является допустимой группой. Приложение имеет Files.ReadWrite.All
и Group.ReadWrite.All
на уровне приложения, и была нажата кнопка «Предоставить права администратора».
Используется для работы с HTTPClient и REST * 1011. * с таким логином:
var authContext = new AuthenticationContext($"https://login.microsoftonline.com/{AzureConfiguration.TenantId}");
var creds = new ClientCredential(APP_ID, APP_SECRET);
var authResult = await authContext.AcquireTokenAsync("https://graph.microsoft.com/", creds);
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", authResult.AccessToken);
, а затем вызывая его так: с помощью вспомогательной функции, которая просто отправляет json :
var result = await Post<Subscription, Subscription>(client, $"{GRAPH_URL}/subscriptions", new Subscription
{
ChangeType = "updated",
NotificationUrl = $"{apiUrl}/v1/SharepointNotifications/Notify",
Resource = $"/groups/{CONTENT_GROUP_ID}/drive/root",
ExpirationDateTime = DateTimeOffset.UtcNow.AddMinutes(SubscriptionLength),
ClientState = Guid.NewGuid().ToString()
});
(Этот кодраньше работал, но не смог при этом обновлении подписки.)
Я в растерянности относительно того, что отличается и заставляет это не работать. Как мне это сделать?