Onedrive API 拒绝访问令牌(CompactToken 解析失败,错误代码:8004920A)

Cou*_*phy 1 onedrive microsoft-graph-api

希望我错过了一些非常简单的东西。根据此文档获取访问令牌,我需要点击以下网址:

https://login.live.com/oauth20_authorize.srf?client_id={client_id}&scope={scope}
&response_type=token&redirect_uri={redirect_uri}
Run Code Online (Sandbox Code Playgroud)

到目前为止,这似乎是我得到的返回 url 包含的工作

/#access_token=EwAYA61DBAAUcSSzo.......
Run Code Online (Sandbox Code Playgroud)

根据上面的令牌流文档,

您可以使用 access_token 的值向 OneDrive API 发出请求。

根据这个页面,

您的应用程序通过 HTTP 标头在每个请求中提供访问令牌:

授权:承载 {token}

运行 curl 时,我给了它我之前给定的确切标记,

curl -X GET \
https://graph.microsoft.com/v1.0/drive \
-H 'Authorization: Bearer EwAYA61DBAAUcSSzoTJJs.....

{
"error": {
    "code": "InvalidAuthenticationToken",
    "message": "CompactToken parsing failed with error code: 8004920A",
    "innerError": {
        "request-id": "8780c600-2b7f-45a0-b484-7eca9dfd2697",
        "date": "2019-01-25T19:33:22"
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

为什么他们提供的令牌不起作用?

到目前为止我尝试过的:

  • 改变报头中承载的大小写
  • 将所述令牌包装在 {} 中
  • 生成新令牌
  • URL解码表示令牌

需要注意的一件事:我收到的令牌不是JWT 令牌。谷歌搜索错误代码会发现几个堆栈溢出问题,这些问题似乎暗示图形 api 需要 JWT。如果是这种情况,我是否错过了获取它的步骤?

xil*_*int 5

完成 Microsoft 帐户(OneDrive 个人)的身份验证流程后,您无法调用 Microsoft Graph API。

此外,根据文档不再推荐使用 Microsoft 帐户的授权过程,应使用 Microsoft Graph 开发新应用程序:

本主题包含有关使用 Microsoft 帐户为 OneDrive 个人授权应用程序的信息。但是,不再推荐这种方法。新应用程序应使用 Microsoft Graph 开发,并遵循 Microsoft Graph中 OneDrive 的授权和登录中的授权流程。