You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Microsoft Graph API获取OneDrive特定共享链接的授权用户信息

获取OneDrive共享链接的授权人员信息(Graph API方案)

我之前也碰到过一模一样的问题:OneDrive界面明明能看到共享链接对应的授权用户,但调用Graph API返回的权限对象里只有scope: "users",完全看不到关联的用户信息。其实核心问题是默认的权限查询不会返回关联的身份数据,需要显式扩展属性。

下面是具体的解决步骤:

1. 修改Graph API请求,添加扩展参数

默认调用GET /drives/{drive-id}/items/{item-id}/permissions/{permission-id}只会返回基础权限信息(就是你贴的那个响应)。要获取授权用户,需要在请求中加上$expand=grantedToIdentitiesV2(推荐用V2版本,包含更完整的身份信息)。

完整请求示例:

GET https://graph.microsoft.com/v1.0/drives/{drive-id}/items/{item-id}/permissions/{permission-id}?$expand=grantedToIdentitiesV2

2. 解析返回的授权用户信息

加上扩展参数后,响应里会多出grantedToIdentitiesV2数组,里面包含所有被授权的用户详情,示例如下:

{
  "@odata.context": "https://graph.microsoft.com/v1.0/$metadata#drives('b***')/items('0***')/permissions/$entity",
  "id": "***-c555beee2324",
  "roles": [ "read" ],
  "link": { "scope": "users", "type": "view", "webUrl": "***qbagBM9ioYBhgkVqZx4blggM7Ow" },
  "grantedToIdentitiesV2": [
    {
      "user": {
        "id": "user-id-123",
        "displayName": "张三",
        "userPrincipalName": "zhangsan@contoso.com"
      }
    }
  ]
}

3. 确认权限范围

确保你的应用已经申请了足够的Graph API权限,比如Files.Read.All(针对个人OneDrive)或Sites.Read.All(针对SharePoint/OneDrive for Business),否则可能无法获取到身份扩展信息。

补充说明

OneDrive UI之所以能直接看到授权用户,是因为它内部调用的Graph API请求已经自动包含了$expand参数,而我们手动调用时需要显式指定这一步。另外,如果你使用beta版本的Graph API,还能获取到更多额外的身份属性,但v1.0版本已经足够满足基本需求。

内容的提问来源于stack exchange,提问作者Amiram Krasner

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.07 07:47:36