Графика API-подписка Webhook для OneDrive не работает - PullRequest
0 голосов
/ 25 февраля 2019

Я пытаюсь перехватить событие «общий доступ к документам» в One Drive с помощью API подписки Graph.Я могу создать подписку в своем приложении Dotnet WebAPI.Ниже приведен мой код:

     Microsoft.Graph.User user = funGetO365User("user1@mydomain.onmicrosoft.com");

//Notification  URL = /notification/listen

                Subscription subscription = new Subscription
                {
                    Resource = "/"+ user.Id + "/drive/root",
                    ChangeType = "updated",
                    NotificationUrl = 
 ConfigurationManager.AppSettings["ida:NotificationUrl"],
                    ClientState = Guid.NewGuid().ToString(),
                    //ExpirationDateTime = DateTime.UtcNow + new TimeSpan(0, 0, 4230, 0) // current maximum timespan 
                    ExpirationDateTime = DateTime.UtcNow + new TimeSpan(0, 0, 15, 0) // shorter duration useful for testing
                };

 string contentString = JsonConvert.SerializeObject(subscription, 
                new JsonSerializerSettings { NullValueHandling = NullValueHandling.Ignore });

HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Post, subscriptionsEndpoint);
            request.Content = new StringContent(contentString, System.Text.Encoding.UTF8, "application/json");

 // Send the `POST subscriptions` request and parse the response.
 GraphHttpClient graphHttpClient = new GraphHttpClient(accessToken);
 HttpResponseMessage response = await graphHttpClient.SendAsync(request);

Мое приложение работает на локальном хосте, и я использую ngrok для передачи запроса на локальный хост.

Я получаю уведомление, когда создаю подписку:

[HttpPost]
public async Task<ActionResult> Listen()
{

    // Validate the new subscription by sending the token back to Microsoft Graph.
    // This response is required for each subscription.
    if (Request.QueryString["validationToken"] != null)
    {
        var token = Request.QueryString["validationToken"];

        return Content(token, "plain/text");
    }
    else
    {
    // My code- Never executed
    }
}

Однако, если я внесу какие-либо изменения в один диск пользователя (редактировать документ, поделиться документом), я не получулюбое уведомление.

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

1 Ответ

0 голосов
/ 01 марта 2019

Кажется, проблема решена.URL конечной точки

"graph.microsoft.com/v1.0/drives" + user.Id + "/root" 

, где user.Id - уникальный идентификатор пользователя Graph.Теперь я могу получать уведомления о любых изменениях в порядке, но мне было интересно, есть ли способ, которым я могу получать уведомления только при изменении разрешения любого из файлов на диске?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...