使用Graph API创建OneNote笔记本遇BadRequest错误求助
问题原因与解决方案
为什么不能用/me请求
me是Graph API的特殊路径,用来指代当前经过身份验证的用户,这个逻辑仅在委托认证流(比如授权码流)中有效——因为委托流的令牌是用户授权后生成的,绑定了具体的用户身份。- 而
client_credentials流是应用以自身身份请求令牌,没有关联任何具体用户,Graph API无法识别/me对应的主体,因此返回BadRequest错误。
解决步骤
因为你已经给Azure应用配置了Notes.ReadWrite.All应用权限,可按以下方式调整调用:
- 替换请求端点:把
/me/onenote/notebooks替换为/users/{user-id}/onenote/notebooks,其中{user-id}是你要创建笔记本的目标用户的ID(或用户的UPN,比如user@domain.com)。 - 保持请求体不变:和之前用
/me时的请求体一致,示例如下:{ "displayName": "新笔记本名称" } - 确认权限状态:确保Azure应用的
Notes.ReadWrite.All权限已经被管理员同意(应用权限需要管理员手动批准,无法由普通用户自行授权)。
调整后,应用就能以自身身份为指定用户创建OneNote笔记本。
内容的提问来源于stack exchange,提问作者ShaliniP
相关产品推荐
相关产品推荐

