簡體   English   中英

為facebook請求Access_Token時出現400錯誤請求錯誤

[英]400 bad request error when requesting Access_Token for facebook

我在從facebook請求訪問令牌時遇到了一些問題。 首先它起作用了。 但現在它不再起作用,我不認為我在特定的代碼行中改變了一些東西。

這是我一直在做的事情:

public static String requestAccesToken(string code)
    {
        //create the constructor with post type and few data
        MyWebRequest myRequest = new MyWebRequest("https://graph.facebook.com/oauth/access_token?", "POST", "client_id=" + getAppID() + "&client_secret=" + getAppSecret() + "&code=" + code + "&redirect_uri=http://localhost:57689/search.aspx");

        string accessToken = myRequest.GetResponse().Split('&')[0];  
        accessToken = accessToken.Split('=')[1];

        return accessToken;
    }
 public static String getAppID()
    {
        return System.Configuration.ConfigurationManager.AppSettings["AppID"].ToString();
    }

    public static String getAppSecret()
    {
        return System.Configuration.ConfigurationManager.AppSettings["AppSecret"].ToString();
    }

分類:MyWebrequest:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Net;
using System.IO;
using System.Text;

public class MyWebRequest
{
    private WebRequest request;
    private Stream dataStream;

    private string status;

    public String Status
    {
        get
        {
            return status;
        }
        set
        {
            status = value;
        }
    }
    /*
     * simply download the data of the web page
     */
    public MyWebRequest(string url)
    {
        // Create a request using a URL that can receive a post.

        request = WebRequest.Create(url);
    }

    public MyWebRequest(string url, string method)
        : this(url)
    {

        if (method.Equals("GET") || method.Equals("POST"))
        {
            // Set the Method property of the request to POST.
            request.Method = method;
        }
        else
        {
            throw new Exception("Invalid Method Type");
        }
    }

    public MyWebRequest(string url, string method, string data)
        : this(url, method)
    {

        // Create POST data and convert it to a byte array.
        string postData = data;
        byte[] byteArray = Encoding.UTF8.GetBytes(postData);

        // Set the ContentType property of the WebRequest.
        request.ContentType = "application/x-www-form-urlencoded";

        // Set the ContentLength property of the WebRequest.
        request.ContentLength = byteArray.Length;

        // Get the request stream.
        dataStream = request.GetRequestStream();

        // Write the data to the request stream.
        dataStream.Write(byteArray, 0, byteArray.Length);

        // Close the Stream object.
        dataStream.Close();

    }

    public string GetResponse()
    {
        // Get the original response.
        WebResponse response = request.GetResponse(); //400 ERROR BAD REQUEST

        this.Status = ((HttpWebResponse)response).StatusDescription;

        // Get the stream containing all content returned by the requested server.
        dataStream = response.GetResponseStream();

        // Open the stream using a StreamReader for easy access.
        StreamReader reader = new StreamReader(dataStream);

        // Read the content fully up to the end.
        string responseFromServer = reader.ReadToEnd();

        // Clean up the streams.
        reader.Close();
        dataStream.Close();
        response.Close();

        return responseFromServer;
    }

}

哪里出錯了? 我真的堅持這個。

謝謝你的閱讀!

我昨天遇到了同樣的問題。 我使用WebClient而不是WebRequest修復它。 我認為Http error正在出現,因為響應是使用gzip編碼 ,因為我在redirect_uri中發送了一些參數(我不確定這是否是原因,但它現在正在工作):

            try
            {
                WebClient wc = new WebClient();

                wc.Headers.Add(HttpRequestHeader.AcceptEncoding, "gzip");

                //that solves the problem with GZIP partially:
                wc.Proxy = null;

                using (StreamReader reader = new StreamReader(wc.OpenRead(url)))
                {
                    string conteudo = reader.ReadToEnd();

                    ...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM