我已经在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"
问题 - 当我运行程序时,我得到了这个:
怎么回事?
答案 0 :(得分:2)
您正在针对错误的端点进行身份验证。 login.live.com
端点无法为Graph提供有效令牌。您需要使用v2 Endpoint来代替。
查看Microsoft v2 Endpoint Primer了解演练内容。鉴于您使用的是curl,所提供的伪代码应该可以为您提供所需的一切。