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

使用Graph API无交互读写Excel:App-Only令牌权限及认证问题

无交互访问Excel工作簿的解决方案

一、App-Only令牌访问的可行方案

首先明确:/me是委托流专属端点,App-Only模式下完全无法使用,必须改用资源定位的绝对路径。

1. 替换API端点

将/me/drive/...替换为具体资源的路径:

  • 访问SharePoint站点中的Excel:/sites/{site-id}/drive/items/{item-id}/workbook/worksheets('someSheet')/usedRange
  • 访问Microsoft 365组驱动器中的Excel:/groups/{group-id}/drive/items/{item-id}/workbook/worksheets('someSheet')/usedRange

2. 配置正确的应用权限

在Azure AD应用注册中添加以下应用权限(注意是Application类型,而非Delegated):

  • Files.ReadWrite.All:允许应用读写所有用户的OneDrive/SharePoint文件
  • Sites.ReadWrite.All:允许应用读写所有SharePoint站点内容
    添加权限后需由管理员完成权限授予,否则API调用会返回权限不足错误。

Excel的Workbook操作API(如读取usedRange、修改单元格)完全支持App-Only模式,只要路径和权限配置正确即可。

二、无用户交互的委托认证流实现

如果必须使用委托流且全程无用户交互,可通过以下两种方式实现:

1. Refresh Token静默刷新

  • 前提:首次需通过授权码流让目标用户完成一次登录授权,获取到refresh_token(有效期通常为90天)
  • 后续无交互流程:调用令牌端点POST /oauth2/v2.0/token,参数如下:
    grant_type=refresh_token
    client_id={你的应用ID}
    client_secret={你的应用密钥}
    refresh_token={存储的refresh_token}
    scope={所需权限范围,如Files.ReadWrite}
    
    该请求会返回新的access_token,全程无需用户参与。

2. 管理员预同意+静默授权

  • 企业环境中,管理员可通过Azure AD的管理员同意流程,为所有用户预同意应用的委托权限
  • 之后使用授权码流的静默模式(prompt=none参数),若用户已登录过且权限已同意,可直接获取access_token和refresh_token,无需用户操作。

注意:ROPC(资源所有者密码凭据流)也能实现无交互,但需要存储用户明文密码,安全性极低,强烈不推荐使用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 02:55:03