2017-05-05 3 views
1

J'ai examiné les deux questions similaires dans StackoverFlow et sur le Web, mais je ne comprends toujours pas ce que je devrais faire.L'API Microsoft OneDrive InvalidAuthenticationToken L'analyse CompactToken a échoué avec le code d'erreur: -2147184105

Je souhaite télécharger un fichier situé sur OneDrive par programmation en utilisant un script bash (avec curl).

J'ai donc vu here que je peux utiliser le flux de code pour accéder à Microsoft Graph. Donc, je me suis rendu comme ça (je me suis inspiré du Jay Lee answer):

1- J'obtenir le code avec cette 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- Ensuite, j'échange code d'autorisation pour le jeton d'accès à cette 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"

et je stocke le jeton et le temps expire dans un fichier

3- Je fait un processus pour gérer le fait que je dois rafraîchir le jeton (en fonction du temps expire).

4- J'utiliser mon jeton pour télécharger mon fichier programme avec 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"

Le problème- Quand je lance le programme, je reçois ceci:

enter image description here

Comment viens?

Répondre

1

Vous vous authentifiez par rapport au mauvais point de terminaison. Le point de terminaison login.live.com ne peut pas fournir un jeton valide pour Graph. Vous devez utiliser le v2 Endpoint à la place.

Pour une procédure pas à pas, consultez Microsoft v2 Endpoint Primer. Étant donné que vous utilisez curl, le pseudo code fourni devrait vous donner tout ce dont vous avez besoin.