2016-03-21 13 views
0

Ich verwende den folgenden Code, um das Zugriffstoken für Google OAuth2 zu erhalten. Irgendwann wurde es funktioniert gut, aber ich habe etwas/etwas passiert ist getan, und ich kann nicht herausfinden, was und jetzt ist mir immer:Google OAuth2 erhalten Zugriffstoken Fehlende Grant_Type

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

Wenn ich die Post mit dem params in Postbote versuchen ich bekomme

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

Diese wurde zuvor ohne die URL-Codierung arbeiten, habe ich diese in der Suche nach durch ein paar Beiträge mit ähnlichen Problemen zu testen, aber kann nicht scheinen, um eine Antwort zu finden, dass es funktioniert .

+0

Ich glaube, Sie den Header Content-Type auf die Anwendung einstellen müssen eingestellt/x-www-form-urlencoded – Frode

+0

somit in Postbote gerade getestet haben, und mit der Registerkarte body und x-www-form-urlencoded scheint es auch, dass die Umleitung uri ist auch Groß-und Kleinschreibung! Ich arbeite jetzt im Postboten. – Bex

+0

@Frode und Bex arbeiten Sie zusammen, um eine tatsächliche Antwort zu erstellen und sie als Korrekt zu markieren. Nicht nur Sie erhalten Punkte bei StackOverflow, es macht auch die mögliche Antwort sichtbarer. jetzt, auf den ersten Blick, schien es keine Antwort zu geben, als du meine Probleme gelöst hast;) – Jeroen

Antwort

0

benötigen Sie den http POST-Request-Header des Content-Type zu application/x-www-form-urlencoded

Verwandte Themen