Срок действия запроса кода авторизации API One Drive всегда истек
Я пытаюсь использовать поток кода авторизации присяги AD v2 для одного диска. Приложение правильно зарегистрировано в моей учетной записи в качестве веб-платформы. Я могу получить код авторизации, но когда я собираюсь использовать его для получения токена, я всегда получаю
{
"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"
}
мой запрос
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
1 ответ
Решение
Ошибка была с URL перенаправления. Я установил производственный URL, и после этого я копировал код на локальный хост для отладки процесса токена. Когда я изменяю URL перенаправления запроса, чтобы locahost работал как шарм. Мое мнение, это должно быть упомянуто в их документации (у меня никогда не было такой проблемы на других API, таких как Google Drive)