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

时间:2019-01-25 20:53:46

标签: microsoft-graph onedrive

希望我缺少一些非常简单的东西。根据{{​​3}}的说法,要获取访问令牌,我需要点击以下网址:

https://login.live.com/oauth20_authorize.srf?client_id={client_id}&scope={scope}
&response_type=token&redirect_uri={redirect_uri}

到目前为止,由于我得到的返回网址包含

,因此这似乎可以正常工作
/#access_token=EwAYA61DBAAUcSSzo.......

根据上面的令牌流文档

  

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

根据this documentation页,

  

您的应用通过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"
    }
  }
}

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

到目前为止,我已经尝试过:

  • 更改标题中的载体大小写
  • 将上述令牌包装在{}
  • 生成新令牌
  • URL解码所述令牌

需要注意的一件事:我收到的令牌不是JWT令牌。搜寻错误代码会引发几个堆栈溢出问题,这些问题似乎暗示了图api期望使用JWT。如果是这样,我是否错过了获取它的步骤?

1 个答案:

答案 0 :(得分:3)

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

此外,不再建议according the docs使用Microsoft帐户进行授权,而应使用Microsoft Graph开发新的应用程序:

  

本主题包含有关使用Microsoft帐户为OneDrive个人授权应用程序的信息。但是,不再建议使用此方法。新的应用程序应使用Microsoft Graph开发,并遵循Authorization and sign-in for OneDrive in Microsoft Graph中的授权过程。