RestSharp Google's OAuth - PullRequest
       3

RestSharp Google's OAuth

0 голосов
/ 12 сентября 2018

Если я использую RestSharp для grant_type = authorization_code на OAuth-сервере Google, я получаю следующий ответ:

{
  "error": {
    "code": 400,
    "message": "Invalid JSON payload received. Unexpected token.\ngrant_type=authoriza\n^",
    "status": "INVALID_ARGUMENT"
  }
}

Если я выполняю запрос с помощью Fiddler, все работает,он также работает с другими OAuth-серверами.

RestRequest:

RestClient  restClient = new RestClient(@"https://www.googleapis.com/");
RestRequest restRequest = new RestRequest(@"oauth2/v4/token", Method.POST);
            restRequest.AddHeader("Accept", "application/json");
            restRequest.AddHeader("Content-Type", "application/x-www-urlencoded");
restRequest.AddParameter("grant_type", "authorization_code");
restRequest.AddParameter("client_id", "id");
restRequest.AddParameter("client_secret", "secret");
restRequest.AddParameter("code", "authcode");
restRequest.AddParameter("redirect_uri", "redirectURI");

Как решить эту проблему?Почему это: \ngrant_type=authoriza\n^

1 Ответ

0 голосов
/ 12 сентября 2018

Строка должна быть добавлена ​​как один параметр

POST https://accounts.google.com/o/oauth2/token
code=4/X9lG6uWd8-MMJPElWggHZRzyFKtp.QubAT_P-GEwePvB8fYmgkJzntDnaiAI&client_id={ClientId}.apps.googleusercontent.com&client_secret={ClientSecret}&redirect_uri=urn:ietf:wg:oauth:2.0:oob&grant_type=authorization_code

Полезная нагрузка - это отдельная строка запроса http, она НЕ форматирует json ответ, который вы получаете, однако в формате json

тип контента должен быть

application/x-www-form-urlencoded
...