2016-03-21 2 views
0

Я использую следующий код, чтобы получить токен доступа для google OAuth2. В какой-то момент она работает нормально, но я сделал что-то/что-то произошло, и я не могу работать, что и сейчас я получаю:Google OAuth2 получить токен доступа Отсутствует grant_type

The remote server returned an error: (400) Bad Request.

Когда я пытаюсь пост с Params в почтальона Я получаю

{ "error": "invalid_request", "error_description": "Required parameter is missing: grant_type" }

using (WebClient client = new WebClient()) 
     { 

      byte[] response = 
       client.UploadValues("https://accounts.google.com/o/oauth2/token","POST", new NameValueCollection() 
        { 
         {"code",HttpContext.Current.Server.UrlEncode(authCode.ToString())}, 
         {"redirect_uri", Uri.EscapeDataString("http://YouTubeTest.org/testpage.aspx")}, 
         {"client_id", HttpContext.Current.Server.UrlEncode(clientId)}, 
         {"client_secret", HttpContext.Current.Server.UrlEncode(clientSecret)}, 
         {"grant_type", "authorization_code"} 
        }); 

      string result = Encoding.UTF8.GetString(response); 
      XElement node = XElement.Parse(JsonConvert.DeserializeXNode(result, "Root").ToString()); 
      string refreshToken = node.Element("refresh_token").Value; 
      string accessToken = node.Element("access_token").Value; 

     //more work to do something with tokens 
     } 

Это ранее работали без кодирования URL, я добавил это в систему, чтобы проверить, посмотрев через несколько постов с подобными проблемами, но не могу найти ответ, который будет заставить его работать ,

+0

Я думаю, вам нужно установить заголовок Content-Type для приложения/х-WWW-форм-urlencoded – Frode

+0

Только что проверено, таким образом, в почтальона, и используя вкладку body и x-www-form-urlencoded, также кажется, что перенаправление uri также чувствительно к регистру! Сейчас я работаю в почтальоне. – Bex

+0

@Frode и Bex, пожалуйста, работайте вместе, создавая ответный ответ и отмечая его как «Правильно». Вы не только получите очки в StackOverflow, но и сделаете возможный ответ более заметным. теперь, на первый взгляд, казалось, что ответа не было, пока вы 2 действительно решили мои проблемы;) – Jeroen

ответ

0

Вы должны установить HTTP POST-запрос заголовка по Content-Type к application/x-www-form-urlencoded