Я пытаюсь настроить автономный доступ для приложения API Google Analytics с использованием OAuth2, и я использую ASP.NET для POST моего кода авторизации в обмен на обновить токен, но я не могу получить ответ от сервера, чтобы дать мне токен обновления.API Google Analytics - Получить токен обновления с помощью OAuth2 и ASP.NET
Я использовал код примера из документации MSDN для почтового запроса, поэтому могу только предположить, что это правильно, однако я получаю сообщение об ошибке «Удаленный сервер возвратил ошибку: (400)« Плохой запрос в системе » .Net.HttpWebRequest.GetResponse() ":
using System;
using System.IO;
using System.Net;
using System.Text;
WebRequest request = WebRequest.Create ("https://accounts.google.com/o/oauth2/token?code=xxxmyauthorizationcodexxx&client_id=xxxxxxxxx.apps.googleusercontent.com&client_secret=xxxxxxxxxxxx&redirect_uri=https://mysite.com/oauth2callback&grant_type=authorization_code");
request.Method = "POST";
string postData = "code=xxxmyauthorizationcodexxx&client_id=xxxxxxxxx.apps.googleusercontent.com&client_secret=xxxxxxxxxxxx&redirect_uri=https://mysite.com/oauth2callback&grant_type=authorization_code";
byte[] byteArray = Encoding.UTF8.GetBytes (postData);
request.ContentType = "application/x-www-form-urlencoded";
request.ContentLength = byteArray.Length;
Stream dataStream = request.GetRequestStream();
dataStream.Write (byteArray, 0, byteArray.Length);
dataStream.Close();
WebResponse response = request.GetResponse();
dataStream = response.GetResponseStream();
StreamReader reader = new StreamReader (dataStream);
string responseFromServer = reader.ReadToEnd();
reader.Close();
dataStream.Close();
response.Close();
Я успешно использовал метод GET для получения кода авторизации для начала и я отслеживаю эту документацию: https://developers.google.com/accounts/docs/OAuth2WebServer#handlingtheresponse
Я также используя https-сайт, чтобы делать запросы, и я вручную обновляю свои код авторизации по мере его истечения. У кого-нибудь есть решение этой проблемы?
EDIT: для тех, кто испытывает ту же проблему, сначала посмотрите на ответ aeijdenberg ниже, но мое решение заключалось в том, что код авторизации, который я использовал для параметров кода, истекает довольно мгновенно - я постоянно обновлял свою страницу без запроса нового. Чтобы получить данные, просто отобразите содержимое из переменной responseFromServer.
Спасибо это помогло мне :) – user1926138