希望我缺少一些非常简单的东西。根据{{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发出请求。
您的应用通过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"
}
}
}
为什么他们提供的令牌不起作用?
到目前为止,我已经尝试过:
需要注意的一件事:我收到的令牌不是JWT令牌。搜寻错误代码会引发几个堆栈溢出问题,这些问题似乎暗示了图api期望使用JWT。如果是这样,我是否错过了获取它的步骤?
答案 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中的授权过程。