Microsoft OneDrive API InvalidAuthenticationToken CompactToken解析失败,错误代码:-2147184105

时间:2017-05-05 16:54:59

标签: bash curl microsoft-graph onedrive

我已经在StackoverFlow和网络上查看了两个类似的问题,但我仍然不明白我应该做些什么。

我想使用bash脚本(使用curl)以编程方式下载OneDrive上的文件。

所以我看到here我可以使用代码流来访问Microsoft Graph。所以我继续这样做(我从Jay Lee answer启发了自己):

1-我使用此URL获取代码 https://login.live.com/oauth20_authorize.srf?client_id=10c492f9-132a-4079-adae-382dad9d4339&scope=onedrive.readonly&response_type=code&redirect_uri=https://login.microsoftonline.com/common/oauth2/nativeclient

2-然后我用这个URL交换访问令牌的授权码: curl -X POST https://login.live.com/oauth20_token.srf -d "client_id=${client_id}&redirect_uri=${redirect_uri}&code=${auth_code}&grant_type=authorization_code" --header "Content-Type:application/x-www-form-urlencoded"

我将令牌和过期时间存储在文件中

3-我做了一些处理事实,我必须刷新令牌(根据过期时间)。

4-我使用我的令牌以编程方式使用Microsoft Graph

下载我的文件

api_data=$(curl https://graph.microsoft.com/v1.0/me/drive/items/B8D9948257F95B84%21104/content -H "Authorization: Bearer $access_token") echo -e "$api_data"

问题 - 当我运行程序时,我得到了这个:

enter image description here

怎么回事?

1 个答案:

答案 0 :(得分:2)

您正在针对错误的端点进行身份验证。 login.live.com端点无法为Graph提供有效令牌。您需要使用v2 Endpoint来代替。

查看Microsoft v2 Endpoint Primer了解演练内容。鉴于您使用的是curl,所提供的伪代码应该可以为您提供所需的一切。