如何解决Microsoft Graph调用报错:无法获取Excel数据、令牌为空
排查 InvalidAuthenticationToken(Access token is empty)问题的步骤
1. 验证 Access Token 获取流程的正确性
- 确认请求Token的端点URL是否正确:
- 若使用Azure AD v2.0端点,单租户场景用
https://login.microsoftonline.com/{tenant-id}/oauth2/v2.0/token,多租户场景替换{tenant-id}为common
- 若使用Azure AD v2.0端点,单租户场景用
- 检查请求参数完整性与正确性:
- 客户端凭据流需包含
grant_type=client_credentials;授权码流需携带code、redirect_uri等对应参数 - 核对
client_id(Azure门户应用程序ID)与client_secret(客户端密码),确保无拼写错误、多余空格,未混淆两者 - 访问OneDrive/Excel时,
scope参数需匹配权限类型:客户端凭据流用https://graph.microsoft.com/.default,授权码流用Files.ReadWrite offline_access等对应范围
- 客户端凭据流需包含
2. 检查 Token 获取后的处理逻辑
- 确认Token获取函数的返回值:
- 打印或日志输出Token响应,检查是否存在
access_token字段,避免返回None或空字符串 - 排查JSON解析等异常,确保Token被正确提取
- 打印或日志输出Token响应,检查是否存在
- 验证Graph API请求头格式:
Authorization字段必须为Bearer {access_token},注意Bearer后有空格,且Token未被截断、修改
3. 验证 Azure AD 应用的权限配置
- 确认应用权限配置正确:
- 操作OneDrive Excel需添加
Files.ReadWrite.All或Sites.ReadWrite.All应用权限,且必须由管理员完成管理员同意授权 - 若用委托权限,需确保用户完成授权流程,且Token包含所需权限范围
- 操作OneDrive Excel需添加
- 检查身份验证设置:
- 授权码流场景下,
redirect_uri需与Azure门户应用注册中的配置完全一致
- 授权码流场景下,
4. 排查代码中的常见错误
- 避免异步/同步代码冲突:若使用
requests同步库,不要混用异步Token获取逻辑 - 确认库版本兼容性:
- 优先使用官方推荐版本组合(如
msgraph-core>=1.0.0搭配requests>=2.25.0),不盲目降级;必要时创建虚拟环境重新安装依赖
- 优先使用官方推荐版本组合(如
- 查看完整日志上下文:
- 记录Token请求的响应状态码(如400、401)及完整错误信息,定位参数或权限问题
5. 测试 Token 有效性
- 用获取到的Token调用测试接口:
- 委托权限场景访问
https://graph.microsoft.com/v1.0/me,应用权限场景访问https://graph.microsoft.com/v1.0/users - 若返回401,说明Token无效,回到Token获取流程排查;若返回正常数据,问题出在Excel操作的API调用逻辑上
- 委托权限场景访问
内容的提问来源于stack exchange,提问作者Aman Prakash Singh
相关产品推荐
相关产品推荐

