c# - 401 Unauthorized - 令牌未被接受
问题描述
我成功地将 Graph API 用于各种事情,但我需要访问 OneNote API 才能在课堂笔记本上执行学生和教师的添加/删除操作。当我以与使用https://www.onenote.com资源对 Graph 相同的方式请求令牌时,它提供了一个令牌,但是当我尝试使用它来访问 OneNote API 时,无论我发送什么(有效)请求,我得到 401 -“请求不包含有效的身份验证令牌。”
我尝试使用 v1.0 端点生成令牌,但结果相同。
我的令牌请求:
POST https://login.microsoftonline.com/ {我的租户}/oauth2/v2.0/token HTTP/1.1 接受:application/json 内容类型:application/x-www-form-urlencoded 主机:login.microsoftonline。 com 内容长度:213 预期:100-继续连接:保持活动状态
grant_type=client_credentials&client_id={我的 appid}&client_secret={我的秘密}&tenant={我的租户}&scope=https%3A%2F%2Fwww.onenote.com%2F.default
或者
POST https://login.microsoftonline.com/ {我的租户}/oauth2/token HTTP/1.1 接受:application/json 内容类型:application/x-www-form-urlencoded 主机:login.microsoftonline.com 内容长度: 161 期望: 100-继续
grant_type=client_credentials&client_id={我的 appid}&client_secret={我的秘密}&resource=https%3A%2F%2Fwww.onenote.com
两者都返回包含 access_token 的内容,例如:{"token_type":"Bearer","expires_in":"3600","ext_expires_in":"3600","expires_on":"1543513719","not_before":"1543509819", “资源”:“ https://www.onenote.com ”,“access_token”:“{一个令牌}”}
请求:GET https://www.onenote.com/api/v1.0/myorganization/groups/ {group id}/notes/ HTTP/1.1 ContentType:application/json 授权:Bearer {token return from /token request} 缓存-控制:无存储,无缓存主机:www.onenote.com
响应:code=40001 message=请求不包含有效的身份验证令牌。
作为参考,这个问题基本上是对以下内容的跟进:使用 API 和课堂笔记本添加学生
解决方案
你在正确的轨道上。资源是 1.0 auth 端点的正确方法。范围需要在应用门户上注册,因此您需要返回并在门户中添加 OneNote 范围。
我不是 100% 确定,但 IIRC onenote 的资源可能需要一个尾随的“/”。
推荐阅读
- smartcard - 读取德国 EC 卡的 IBAN/BIC 时出现问题
- php - 对多颗星使用 preg_match (*)
- c - SO_SNDTIMEO 和 SO_RCVTIMEO 的意外行为
- c++ - 我正在尝试理解这两个代码块,有人可以帮忙吗?
- serverless - 关于 Azure Synapse Analytics 无服务器池连接和查询的 ADLS 的访问控制问题
- django - 在 Django 中批准付款后从 Paypal 脚本提交表单
- spring-boot - spring cloud stream kafka binder enableDlq 没有按我预期的那样工作
- swift - 只允许某些应用程序使用我的 VPN - Swift
- python - 如何使用 django 在网络浏览器上推送通知
- python - 统计模型列联表nd数组2 x 2 xk,无法重塑