调用Microsoft Graph API获取日历遇OrganizationFromTenantGuidNotFound错误
解决调用Microsoft Graph API获取Outlook日历时的
OrganizationFromTenantGuidNotFound错误 核心问题分析
你遇到的错误本质是应用注册配置或请求逻辑不符合个人Microsoft 365租户的要求:个人版账号属于微软消费者租户,而当前Azure应用配置/请求更适配企业租户场景,导致Token无法匹配个人租户权限。
具体解决步骤
修正请求端点
个人版用户无需使用带租户ID的路径,直接调用以下任一端点即可:- 获取当前授权用户的日历:
https://graph.microsoft.com/v1.0/me/calendars - 指定个人用户的日历:
https://graph.microsoft.com/v1.0/users/{userPrincipalName}/calendars(替换{userPrincipalName}为你的个人邮箱,比如xxx@outlook.com)
- 获取当前授权用户的日历:
调整Azure应用的租户支持类型
- 登录Azure Portal,进入你的应用注册页面
- 找到“管理”板块下的“身份验证”选项
- 将“支持的账户类型”改为任何组织目录中的账户和个人Microsoft账户(例如Skype、Xbox)
- 保存配置
替换正确的API权限
移除之前添加的Office 365 Management APIs权限,添加Microsoft Graph的委派权限:- 进入应用注册的“API权限”页面
- 点击“添加权限”→选择“Microsoft Graph”→“委派权限”
- 搜索并勾选
Calendars.Read或Calendars.ReadWrite(按需选择) - 点击“添加权限”,并完成权限同意(个人账号可直接完成同意)
验证并修正Token获取逻辑
- 解码你的Access Token,对比Graph Explorer的Token,重点检查:
tid(租户ID):个人版账号的tid应为消费者租户ID,而非你Azure应用的单租户IDscp(权限范围):需包含Calendars.Read等Microsoft Graph日历权限,而非Office 365 Management APIs相关权限
- 确保授权码流程的
scope参数为https://graph.microsoft.com/Calendars.Read openid profile offline_access(按需添加其他所需权限),而非Office 365相关的scope
- 解码你的Access Token,对比Graph Explorer的Token,重点检查:
重新获取Token并测试
按照修正后的配置重新走授权码流程获取Token,再调用日历接口验证结果
内容的提问来源于stack exchange,提问作者Josep Navarro
相关产品推荐
相关产品推荐

