调用Microsoft Graph列出笔记本遇InvalidAuthenticationToken错误求助
问题分析与解决方案
1. InvalidAuthenticationToken(受众错误)的原因及解决
你当前用的scope = "api://<guidfromzurehere/.default"是自定义API的权限范围,用这个scope拿到的token,受众(aud)指向你的自定义API,而非Microsoft Graph。调用Graph API时,服务端会校验token的受众是否为https://graph.microsoft.com,所以必然触发错误。
解决办法:
把scope改成https://graph.microsoft.com/.default,这是调用Graph API应用权限时的正确格式。
2. 使用https://graph.microsoft.com/.default时的许可证错误解决
出现许可证错误,按以下几点逐一排查:
- 目标用户无有效OneNote许可证:请求里指定的
myemailaddress用户,必须拥有包含OneNote功能的Office 365订阅(比如E3、E5、OneNote for Business计划等)。登录Azure AD管理中心,检查该用户的许可证分配状态,确保已配置对应权限。 - 应用权限未正确配置或授权:
- 登录Azure AD应用注册页面,找到你的应用,进入「API权限」选项卡。
- 添加应用权限(注意是应用权限,不是委托权限,因为你用的是client_credentials客户端凭证流),选择Microsoft Graph下的
Notes.Read.All或Notes.ReadWrite.All权限。 - 点击「授予管理员同意」,确保权限生效(需全局管理员或权限管理员操作)。
- 确认API权限支持客户端凭证流:OneNote的
/users/{id}/onenote/notebooksAPI确实支持应用权限,但要保证权限配置正确,且用户有合法许可证。
修正后的代码片段
仅需修改scope部分:
scope = "https://graph.microsoft.com/.default"
内容的提问来源于stack exchange,提问作者Charles Medcoff
相关产品推荐
相关产品推荐

