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

MS Graph API me/messages端点返回ErrorAccessDenied权限问题求助

解决MS Graph API me/messages端点权限拒绝问题

以下是针对你的问题的具体解决步骤:

1. 明确端点权限差异

me/sendMail 仅需要 Mail.Send 委托权限,但创建草稿的 me/messages 端点要求 Mail.ReadWrite 委托权限(或更高权限)。你之前的权限配置大概率只包含了Mail.Send,导致调用新端点时权限不足。

2. 更新Azure AD应用注册的权限

  • 登录Azure门户,找到你的应用注册
  • 进入「API权限」页面,点击「添加权限」→「Microsoft Graph」→「委托权限」
  • 搜索并添加 Mail.ReadWrite 权限
  • 若为企业租户,需管理员点击「授予管理员同意」(若租户设置为用户无法自行同意权限)

3. 调整MSAL令牌请求的权限范围

调用MSAL获取令牌时,确保scope参数同时包含原有Mail.Send和新增的Mail.ReadWrite,示例C#代码:

var scopes = new[] { "https://graph.microsoft.com/Mail.Send", "https://graph.microsoft.com/Mail.ReadWrite" };
var result = await _publicClientApplication.AcquireTokenInteractive(scopes).ExecuteAsync();

4. 清理MSAL令牌缓存

MSAL会缓存旧令牌,若之前的令牌仅含Mail.Send权限,即使更新scope也可能复用旧令牌。解决方式:

  • 关闭并重启WPF应用,清除本地MSAL缓存(通常位于用户目录下的.msal文件夹)
  • 或在代码中调用MSAL的RemoveAsync方法清除目标账户的缓存

5. 验证令牌权限

获取新令牌后,使用本地离线JWT解析工具解析令牌,检查scp字段是否包含Mail.ReadWrite:

  • 若包含,说明权限已正确获取;若不包含,检查scope参数是否正确,以及权限是否已完成同意流程

6. 确认租户权限配置

由于你的账户为联合委托类型,需确认租户是否允许用户自行同意权限:

  • 若租户禁用了用户自行同意,必须由Azure AD管理员完成权限的租户级同意

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 17:15:16