2017-06-10 4 views
0

J'essaie d'utiliser le flux de code d'autorisation AD v2 Oath pour un lecteur. L'application est enregistrée correctement sur mon compte en tant que plateforme Web. Je suis en mesure de récupérer un code d'autorisation, mais quand je vais l'utiliser pour obtenir un jeton que je reçois toujoursUne demande de code d'autorisation de l'API One Drive a toujours expiré

{ 
    "error": "invalid_grant", 
    "error_description": "AADSTS70000: The provided value for the 'code' parameter is not valid. The code has expired.\r\nTrace ID: 95d076f5-6cfa-4de1-ba1a-a81066cf1200\r\nCorrelation ID: 4cddfa50-228b-431a-8746-483e77a273e1\r\nTimestamp: 2017-06-10 09:50:38Z", 
    "error_codes": [ 
    70000 
    ], 
    "timestamp": "2017-06-10 09:50:38Z", 
    "trace_id": "95d076f5-6cfa-4de1-ba1a-a81066cf1200", 
    "correlation_id": "4cddfa50-228b-431a-8746-483e77a273e1" 
} 

ma demande

Dim url As New System.Text.StringBuilder 
url.Append("grant_type=authorization_code") 
url.Append("&client_id=" + clientid) 
url.Append("&client_secret=" + clientsecret) 
url.Append("&redirect_uri=" + System.Web.HttpUtility.UrlEncode(redirecturl)) 
url.Append("&code=" + authcode) 
url.Append("&scope=" + ("offline_access%20files.readwrite")) 
Dim baseaddress = "https://login.microsoftonline.com/common/oauth2/v2.0/token" 

Dim buffer As Byte() = System.Text.Encoding.ASCII.GetBytes(url.ToString) 
Dim req = Net.HttpWebRequest.Create(baseaddress) 
req.Proxy = Nothing 

req.Method = "Post" 
req.ContentType = "application/x-www-form-urlencoded" 

Dim strm As System.IO.Stream = req.GetRequestStream() 
strm.Write(buffer, 0, buffer.Length) 
strm.Close() 
Dim resp As System.Net.HttpWebResponse = req.GetResponse() 
Dim response = New IO.StreamReader(resp.GetResponseStream, False).ReadToEnd 
Return response 

Répondre

0

L'erreur était avec l'URL de redirection. J'avais placé l'URL de production et après que je copiais le code à localhost afin de déboguer le processus de jeton. Quand je change l'URL de redirection de la demande à locahost travaillé comme un charme. Mon avis est que cela devrait être mentionné sur leur documentation (je n'ai jamais eu ce genre de problème sur d'autres API comme google drive)