读取Outlook日历出现userAudience配置错误的原因及解决方法咨询
错误原因
你遇到的报错是Azure应用的用户受众配置与O365库默认使用的身份验证端点不匹配导致的:
- O365库的
MSGraphProtocol默认使用/common/身份验证端点,该端点支持同时对接企业工作/学校账户、个人消费者微软账户,要求应用的用户受众配置为All - 你当前在Azure注册的应用用户受众被设置为了
Consumer(仅支持个人消费者微软账户),该配置下不允许使用/common/端点,因此触发身份验证失败
解决办法
有两种可选择的方案,根据你的业务场景选择即可:
方案1:修改Azure应用用户受众配置(通用方案,适合需要同时支持企业、个人账户的场景)
操作步骤如下:
- 进入Azure门户的「应用注册」页面,打开你创建的目标应用
- 在左侧菜单栏选择「管理」分类下的「身份验证」选项
- 找到「支持的帐户类型」区块,将当前配置从仅个人Microsoft帐户修改为任何组织目录中的帐户和个人Microsoft帐户(例如 Skype、Xbox)
- 保存配置后等待3~5分钟生效,再重新运行测试脚本即可正常完成身份验证
方案2:修改代码适配现有应用配置(适合仅对接个人消费者微软账户的场景)
如果你不需要支持企业用户,无需修改Azure配置,只要修改代码指定身份验证端点为消费者专用端点即可,修改后的代码如下:
from O365 import Account, MSGraphProtocol CLIENT_ID = 'MY CLIENT ID' SECRET_ID = 'MY SECRET ID' credentials = (CLIENT_ID, SECRET_ID) # 指定azure_tenant参数为consumers,使用消费者专属端点匹配当前应用配置 protocol = MSGraphProtocol(azure_tenant='consumers') scopes = ['Calendars.Read.Shared'] account = Account(credentials, protocol=protocol) if account.authenticate(scopes=scopes): print('Authenticated!')
内容的提问来源于stack exchange,提问作者challenger128
相关产品推荐
相关产品推荐

