В настоящее время я работаю над уведомлением веб-перехватчика для диска SharePoint Online с использованием MS Graph API. Подписка уже настроена, как показано ниже.
POST https://graph.microsoft.com/v1.0/subscriptions
{
"changeType": "updated",
"notificationUrl": "https://a123bluhbluh.ngrok-free.app/api/WebHook",
"resource": "/drive/root",
"expirationDateTime": "2024-07-01T00:00:00Z",
"clientState": "c9a46c1f-9d7d-4e2b-80d3-4b18a0d0d4ae"
}
Всякий раз, когда я вношу какие-либо изменения на диске, добавляя или удаляя файл, я получаю уведомление, но данные ресурса имеют значение null (я получаю только OdatType).
{"value":[
{"subscriptionId":"XXX",
"clientState":"c9a46c1f-9d7d-4e2b-80d3-4b18a0d0d4ae",
"tenantId":"XXX",
"resource":"drives/root",
"resourceData":{
"@odata.type":"#Microsoft.Graph.DriveItem",
"Id" : null,
"ODataEtag" : null,
"ODataId" : null
},
"changeType":"updated",
"subscriptionExpirationDateTime":"2024-07-01T00:00:00Z"
}
]
}
Я также пытался добавить "includeResourceData": true
в свою подписку, но это не удалось (похоже, что includeResourceData недействителен для SharePoint).
Мне действительно нужен идентификатор файла (элемента) для другой функции. Все, пожалуйста, помогите мне!!
Не все ресурсы возвращаются resourceData
в самом уведомлении, и driveItem
является одним из них.
Чтобы узнать подробности об обновленных товарах, вам придется использовать дельта-запрос.
Допустим, у вас есть подписка на /me/drive/root
и есть последняя дельта-ссылка на /me/drive/root
.
Как только вы получите уведомление об изменении, вы будете использовать запрос из дельта-ссылки следующим образом.
https://graph.microsoft.com/v1.0/me/drive/root/delta?token = {token}
Ответ будет содержать подробную информацию об обновленных элементах диска.