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

独立应用通过Microsoft Graph API下载OneDrive共享Excel文件的问题

解决Microsoft Graph API访问共享OneDrive Excel文件的问题

一、Graph Explorer中「Item Not found」错误的修复

从/me/insights/shared获取的文件ID属于共享者的OneDrive/SharePoint资源,并非你个人OneDrive(me/drive)内的项,直接用该ID调用/me/drive/items/{drive-item-id}必然找不到资源。

正确访问方式二选一:

  1. 从/me/insights/shared返回结果里提取resourceReference.driveId和resourceReference.id,调用:
    GET https://graph.microsoft.com/v1.0/drives/{drive-id}/items/{item-id}/workbook/worksheets
    
  2. 使用shares端点解析共享链接:
    • 将文件的共享链接做Base64编码(替换特殊字符:/→_,+→-,删除末尾的=)
    • 调用:
      GET https://graph.microsoft.com/v1.0/shares/{encoded-sharing-url}/driveItem/workbook/worksheets
      

二、Daemon应用(无用户授权)访问共享文件的方案

Daemon应用用客户端凭证流,无用户上下文,因此不能用/me路径,需通过明确的资源标识符访问,步骤如下:

1. 配置应用权限

给应用添加应用权限(而非委派权限),例如:

  • Files.Read.All:允许访问所有用户的OneDrive文件
  • Sites.Read.All:允许访问SharePoint站点文件
    需全局管理员完成权限同意。

2. 获取目标文件的标识信息

提前获取以下任一信息:

  • 文件所在的driveId和itemId(可通过管理员账号在Graph Explorer调用/users/{user-id}/drive/root/children定位,或通过/shares端点解析共享链接获取)
  • 文件的编码共享链接(按上述Base64编码规则处理)

3. 调用API下载文件

任选一种方式调用下载接口:

方式1:通过driveId和itemId下载

GET https://graph.microsoft.com/v1.0/drives/{drive-id}/items/{item-id}/content

方式2:通过编码共享链接下载

GET https://graph.microsoft.com/v1.0/shares/{encoded-sharing-url}/driveItem/content

注意事项

  • Daemon应用仅能访问权限覆盖范围内的资源,若共享文件所在的OneDrive/站点不在权限范围内,会返回访问拒绝错误。
  • 若共享文件来自外部组织,需确保租户已开启外部共享权限,且应用权限支持跨组织访问。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 06:20:36