如何通过MS Graph API获取Drive子项的grantedToV2权限信息?
获取OneDrive子项的共享权限(grantedToV2字段)方法
当前现状
- 已成功通过以下请求获取Drive父项的共享权限:
返回结果包含GET https://graph.microsoft.com/v1.0/users/{userid}/drive/items/{itemid}/permissionsgrantedToV2字段,示例如下:"grantedToV2": { "user": { "@odata.type": "#microsoft.graph.sharePointIdentity", "displayName": "USER NAME", "email": "USER EMAIL", "id": "USER ID" } } - 已能通过以下请求获取Drive父项的子项列表:
GET https://graph.microsoft.com/v1.0/users/{userid}/drive/items/{itemid}/children - 尝试通过
GET https://graph.microsoft.com/v1.0/users/{userid}/drive/items/{itemid}/children/{childid}/permissions(带/不带permissions参数)获取子项权限失败,因为该端点不存在。
解决方案
直接调用子项自身的权限接口
OneDrive的权限接口不支持通过children路径嵌套访问,正确的做法是使用子项的id直接调用权限端点:
获取子项ID
从GET https://graph.microsoft.com/v1.0/users/{userid}/drive/items/{itemid}/children的返回结果中,提取每个子项的id(即你的childid)。请求子项权限
将子项的id替换到权限接口的{itemid}位置,请求地址为:
GET https://graph.microsoft.com/v1.0/users/{userid}/drive/items/{childid}/permissions
该请求会返回子项的共享权限信息,包含所需的grantedToV2字段。
补充技巧
- 权限继承说明:如果子项未单独设置权限,会继承父文件夹的权限,此时调用子项权限接口仍会返回继承的权限数据,同样包含
grantedToV2字段。 - 批量获取权限:若需获取多个子项的权限,可使用Graph的批量请求减少请求次数,示例批量请求体如下(发送至
POST https://graph.microsoft.com/v1.0/$batch):{ "requests": [ { "id": "1", "method": "GET", "url": "/users/{userid}/drive/items/{childid1}/permissions" }, { "id": "2", "method": "GET", "url": "/users/{userid}/drive/items/{childid2}/permissions" } ] }
内容的提问来源于stack exchange,提问作者PowerIsPower
相关产品推荐
相关产品推荐

