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

如何使用Microsoft Graph API从OneDrive for Business定时下载文件

从OneDrive for Business批量下载文件的实现步骤

一、解析你的OneDrive for Business地址

你提供的地址https://XXXXXXX-my.sharepoint.com/personal/AA_BBBB_com/_layouts/15/onedrive.aspx包含两个核心信息:

  • 租户标识:XXXXXXX(租户的SharePoint域名前缀)
  • 用户唯一ID:AA_BBBB_com(由用户UPN转换而来,原格式应为AA@BBBB.com,将@和.替换为_)

二、通过MSAL获取Graph API访问令牌

你的APP属于后台服务类场景,适合用客户端凭据流获取令牌,步骤如下(以C#为例):

  1. 初始化MSAL客户端:
var clientId = "你的client_id";
var clientSecret = "你的client_secret";
var tenantId = "XXXXXXX.onmicrosoft.com"; // 也可直接使用租户ID
var scopes = new[] { "https://graph.microsoft.com/.default" };

var app = ConfidentialClientApplicationBuilder
    .Create(clientId)
    .WithClientSecret(clientSecret)
    .WithTenantId(tenantId)
    .Build();

var result = await app.AcquireTokenForClient(scopes).ExecuteAsync();
var accessToken = result.AccessToken;
  1. 权限配置:需在Azure AD中给应用分配Files.Read.All或Sites.Read.All的应用权限(非委派权限),并完成管理员同意。

三、用Graph API定位目标文件

OneDrive for Business的文件在Graph API中关联用户的drive资源,可通过两种方式定位:

方式1:通过文件路径

若知道文件在OneDrive中的相对路径(如/Documents/报表/2024Q1.xlsx),调用接口:

GET https://graph.microsoft.com/v1.0/users/AA@BBBB.com/drive/root:/Documents/报表/2024Q1.xlsx
Authorization: Bearer {accessToken}

(将AA_BBBB_com还原为用户真实UPNAA@BBBB.com)

方式2:通过文件ID

若已获取文件ID,直接调用:

GET https://graph.microsoft.com/v1.0/users/AA@BBBB.com/drive/items/{fileId}
Authorization: Bearer {accessToken}

四、下载文件

从返回的文件元数据中提取@microsoft.graph.downloadUrl字段,该链接是预授权的临时下载地址,直接发起GET请求即可:

GET {downloadUrl}
Authorization: Bearer {accessToken}

关键注意事项

  • 必须确保Azure AD应用已获得足够权限并完成管理员同意,否则会触发权限不足错误。
  • 客户端凭据流无需用户登录,完全适配后台定期自动下载的场景。
  • 如需批量下载,可先调用GET https://graph.microsoft.com/v1.0/users/AA@BBBB.com/drive/root:/目标文件夹路径:/children获取文件夹下所有文件元数据,再逐个发起下载请求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 15:45:36