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

使用Office365 SharePoint共享链接调用Graph API获取文件失败,需排查

问题分析与解决方案

核心问题

你之前的步骤错误在于没有正确解析共享链接的结构,直接用链接里的片段去匹配site和drive路径,而共享链接中的<sharing_id>不是文件/文件夹的实际路径,:x/:y是共享类型的标记(比如:x代表文件,:y代表文件夹),不属于site或drive的路径部分。

正确步骤

1. 解析共享链接获取资源元数据

Graph API提供了专门的端点处理共享链接,无需先手动查找site和drive:

  • 对完整的共享链接进行Base64编码,然后做字符替换:
    • 将编码后的+替换为-
    • 将/替换为_
    • 去掉末尾的=
  • 调用以下接口:
GET https://graph.microsoft.com/v1.0/shares/{encoded_share_link}

响应会返回对应的driveItem对象,包含关键字段:parentReference.driveId(存储该资源的drive ID)、id(资源自身的ID)、@microsoft.graph.downloadUrl(直接下载链接)等。

2. 获取文件内容

有两种方式:

  • 直接使用响应中的@microsoft.graph.downloadUrl发起GET请求下载内容;
  • 利用返回的driveId和itemId调用内容接口:
GET https://graph.microsoft.com/v1.0/drives/{drive_id}/items/{item_id}/content

必要权限配置

确保你使用的身份(用户或应用)拥有对应的权限:

  • 用户权限:Files.Read、Files.Read.All、Sites.Read.All(根据资源范围选择)
  • 应用权限:Files.Read.All、Sites.Read.All(需管理员同意)
    权限需在Azure AD应用注册中配置,或在授权流程中包含对应scope。

原步骤的错误点

  • 第一步获取site的路径错误:共享链接中的<some_folder>并非site的实际路径,且:x/:y是共享标记,不能包含在site路径参数中;
  • 第三步使用<sharing_id>作为drive路径无效:<sharing_id>是共享令牌的一部分,不是资源在drive中的实际路径,无法通过root:/<sharing_id>定位资源。

内容的提问来源于stack exchange,提问作者Rémi Desgrange

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 20:32:20