我目前正在使用 MS Graph API 为 SharePoint Online 驱动器开发 Webhook 通知。订阅已设置如下。
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"
}
每当我通过添加/删除文件对驱动器进行任何更改时,我都会收到通知,但资源数据为空(我只得到 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 对共享点无效)。
我确实需要文件(项目)ID 来实现其他功能。大家请帮帮我!!
并非所有资源都会在通知本身内返回
resourceData
,driveItem
就是其中之一。
要查找有关更新项目的详细信息,您必须使用增量查询。
假设您订阅了
/me/drive/root
并且拥有 /me/drive/root
的最新增量链接。
收到有关更改的通知后,您将使用来自 Delta 链接的查询,如下所示
https://graph.microsoft.com/v1.0/me/drive/root/delta?token={token}
响应将包含有关更新的驱动器项目的详细信息。