代码之家  ›  专栏  ›  技术社区  ›  CountMurphy

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

  •  0
  • CountMurphy  · 技术社区  · 5 年前

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

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

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

    /#access_token=EwAYA61DBAAUcSSzo.......
    

    根据上面的令牌流文档,

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

    根据 this

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

    授权:持票人代币

    当运行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 回复  |  直到 5 年前
        1
  •  2
  •   xilopaint    5 年前

    完成Microsoft帐户(OneDrive Personal)的身份验证流后,不能调用Microsoft Graph API。

    此外,不再推荐使用Microsoft帐户的授权过程 according the docs 应使用Microsoft Graph开发新的应用程序:

    本主题包含有关使用Microsoft帐户为OneDrive Personal授权应用程序的信息。但是,不再推荐这种方法。应使用Microsoft Graph开发新的应用程序,并遵循 Authorization and sign-in for OneDrive in Microsoft Graph .