2017-06-10 2 views
0

Ich versuche, den AD v2 Oath-Autorisierungscode-Fluss für ein Laufwerk zu verwenden. App ist korrekt auf meinem Konto als Web-Plattform registriert. Ich kann einen Autorisierungscode abzurufen, aber wenn ich es benutzen, um werde ein Token ich immerEine Drive API-Autorisierungscodeanforderung ist immer abgelaufen

{ 
    "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" 
} 

meine Anfrage

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 

Antwort

0

Der Fehler mit der Umleitungs-URL war erhalten zu erhalten. Ich hatte die Produktions-URL eingestellt und danach den Code nach localhost kopiert, um den Token-Prozess zu debuggen. Wenn ich die Umleitungsurl der Anfrage zu locahost ändere, arbeitete wie ein Charme. Meine Meinung ist, dass sollte auf ihrer Dokumentation erwähnt werden (ich hatte nie dieses Problem auf andere APIs wie Google Drive)

Verwandte Themen