You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

使用Microsoft Graph API读取其他用户日历事件时遇403错误

解决调用Microsoft Graph API读取其他用户日历返回403的问题

我来帮你排查这个头疼的403错误!Graph Explorer能正常获取结果,但自己调用就失败,通常是权限或身份验证的细节没匹配上,咱们一步步拆解:

1. 检查应用权限的配置差异

Graph Explorer背后用的是微软预先配置好的应用,权限范围和授权状态可能和你自己的应用不一样:

  • 确认权限类型:如果是用户登录后调用(委托权限),你需要申请Calendars.ReadCalendars.Read.Shared;如果是后台服务无用户登录调用(应用权限),得申请Calendars.Read.All
  • 检查权限授权状态:登录Azure AD的应用注册页面,找到你的应用,进入「API权限」标签,看看权限的状态是不是「已授予」。委托权限需要用户登录时授权,应用权限则需要全局管理员同意。

2. 验证Access Token的权限范围

你自己请求获取的access token可能缺少必要的权限,这是最常见的原因:

  • 把你的access token复制到jwt.ms解码,查看scopes字段里有没有包含对应的日历权限(比如Calendars.Read)。
  • 如果没有,说明你请求token时的scope参数写错了,比如应该是https://graph.microsoft.com/Calendars.Read,而不是其他无关的范围。

3. 确认目标用户的日历共享权限

即使API权限配置正确,目标用户的日历可能没开放访问权限:

  • 委托场景:登录的用户需要有访问目标用户日历的权限——要么目标用户在Outlook里把日历共享给了该用户,要么该用户是Exchange/全局管理员(默认有访问所有日历的权限)。
  • 应用场景:确保目标日历没有设置拒绝第三方应用访问的规则,同时应用权限Calendars.Read.All已经被管理员同意。

4. 对比Graph Explorer的请求细节

把你自己的请求和Graph Explorer里的请求做对比:

  • 检查URL是否完全一致(比如beta版本的路径有没有写错)。
  • 确认请求头里的Authorization格式是Bearer {你的token},没有拼写错误。
  • 查看是否有其他必要的请求头(比如Content-Type: application/json)被遗漏。

按照这个顺序排查,应该能找到问题所在!

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

火山引擎 最新活动