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

非管理员调用Microsoft Graph API获取其他用户邮箱权限问题

解决方案

1. 修正代码中的无效Scope

你的代码里存在一个拼写错误的无效Scope:"User-Mail.ReadWrite.All",这会导致权限请求异常。请将所有出现该字段的位置(登录和获取Token的Scope数组)替换为正确的"Mail.ReadWrite.All"。

修正后的Scope示例:

scopes: [
  "Mail.Read",
  "Mail.Send",
  "User.Read",
  "User.Read.All",
  "Mail.ReadWrite.All", // 修正此处
  "Mail.ReadWrite.Shared",
  "MailboxSettings.Read",
  "Mail.Read.Shared",
]

2. 执行租户范围的管理员同意

非管理员用户弹出权限审批提示的核心原因是:管理员仅完成了个人权限同意,而非租户级别的全局同意。请按以下步骤操作:

  • 登录Azure门户,找到你的应用注册。
  • 进入「API权限」页面,确认已添加所需的Microsoft Graph委托权限(例如Mail.Read.All、User.Read.All,这些权限需要管理员批准)。
  • 点击页面顶部的「授予管理员同意」按钮,使用管理员账号完成授权。此操作会将权限授予整个租户的所有用户,非管理员用户无需再单独审批。

3. 确认权限与API调用匹配

你调用的/users/{user-id}/mailFolders接口用于读取其他用户的邮箱,需确保权限匹配:

  • 若要读取租户内任意用户的邮箱,需使用Mail.Read.All委托权限(必须管理员批准)。
  • 若仅读取共享给当前用户的邮箱,Mail.Read.Shared权限即可(部分租户无需管理员批准)。

4. 验证配置正确性

  • 检查msalConfig中的clientId和authority(租户ID)是否为真实有效值,而非占位符。
  • 在应用注册的「身份验证」页面,确认已正确配置SPA重定向URI(http://localhost:3000),并启用了「ID令牌」和「访问令牌」。

完成以上步骤后,非管理员用户即可正常访问其他用户的邮箱,不会再出现管理员审批提示。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 19:04:51