Erhalten des Codes "Bad request 400" beim Senden an StackOverflow-API

  • Auf der letzten Stufe der Authentifizierung gegen StackOverflow erhalte ich ständig den Code "400 Bad Request". Es handelt sich dabei vermutlich um eine einfache POST-Anfrage an https://stackexchange.com/oauth/access_token mit einigen Parametern. Was vermisse ich? Ist es möglich, vom Server mehr Informationen über das Problem zu erhalten?

    Jede Hilfe wird sehr geschätzt!

    Dies ist die Code, den ich zum Senden der Anfrage verwende:

     string code = HttpContext.Current.Request["code"];
    
    // this is what we are sending
    string post_data = "client_id={0}&client_secret={1}&code={2}&redirect_uri={3}";
    post_data = string.Format(post_data, code, clientId, redirect_url, apiSecret);
    post_data = HttpUtility.UrlEncode(post_data);
    
    // this is where we will send it
    string uri = "https://stackexchange.com/oauth/access_token";
    
    // create a request
    HttpWebRequest request = (HttpWebRequest)
    WebRequest.Create(uri);
    request.KeepAlive = false;
    request.ProtocolVersion = HttpVersion.Version10;
    request.Method = "POST";
    
    // turn our request string into a byte stream
    byte[] postBytes = Encoding.ASCII.GetBytes(post_data);
    
    // this is important - make sure you specify type this way
    request.ContentType = "application/x-www-form-urlencoded";
    request.ContentLength = postBytes.Length;
    request.UserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)";
    Stream requestStream = request.GetRequestStream();
    
    // now send it
    requestStream.Write(postBytes, 0, postBytes.Length);
    requestStream.Close();
     
    22 July 2012
    Gabi Mor
2 answers
  •  string post_data = "client_id={0}&client_secret={1}&code={2}&redirect_uri={3}";
    post_data = string.Format(post_data, code, clientId, redirect_url, apiSecret);
     

    Sollte das nicht sein

     string post_data = "client_id={0}&client_secret={1}&code={2}&redirect_uri={3}";
    post_data = string.Format(post_data, clientId, apiSecret, code, redirect_url);
     
    23 July 2012
    Kevin Montrose
  • Versuchen Sie, den URL-Code zu entfernen. Möglicherweise kodieren Sie ihn zweimal

    22 July 2012
    RonyK