【问题标题】:Facebook Graph API: The Remote Server returned an error: (400) Bad RequestFacebook Graph API:远程服务器返回错误:(400)错误请求
【发布时间】:2024-05-01 16:55:02
【问题描述】:

我打算从我的公司主页获取 facebook 见解。
阅读 FB 文档,我必须创建一个 FB-APP 并使用它“进行身份验证并获得访问令牌,然后尝试一些调用来访问您帐户的广告活动对象。” (https://developers.facebook.com/docs/marketing-api/overview#gettingstarted)

第一部分结束,我的应用程序要求特权拥有扩展权限“ads_read”并为我生成访问令牌。

但在那之后,当我询问一些对象,如广告帐户、广告活动等时,我收到消息:“远程服务器返回错误:(400) 错误请求。”

这是我的代码:

默认.aspx:

protected void Page_Load(object sender, EventArgs e)
{
    string facebook__client_id = "331449370396212";
    string urlBase = "https://tecnologia.chleba.net:94";

    string url = "https://graph.facebook.com/oauth/authorize?client_id=" + facebook__client_id + "&redirect_uri=" + urlBase + "/FacebookCallBack.aspx&scope=ads_read";
    Response.Redirect(url);
}

FacebookCallBack.aspx:

protected void Page_Load(object sender, EventArgs e)
{
    string facebook__client_id = "331449370396212";
    string facebook__client_secret = "";
    string urlBase = "";

    if (Request["code"] != null)
    {
        string url = "https://graph.facebook.com/oauth/access_token?client_id=" + facebook__client_id + "&redirect_uri=" + urlBase + "/FacebookCallBack.aspx&client_secret=" + facebook__client_secret + "&code=" + Request["code"].ToString();

        HttpWebRequest req = (HttpWebRequest)HttpWebRequest.CreateDefault(new Uri(url));
        WebResponse res = (WebResponse)req.GetResponse();
        StreamReader sr = new StreamReader(res.GetResponseStream());
        url = sr.ReadToEnd();
        res.Close();
        string[] resposta = url.Split("&".ToCharArray());
        string token = resposta.GetValue(0).ToString().Trim().Replace("access_token=", string.Empty);

        // PROBLEM HERE

        string aUrl = "https://graph.facebook.com/act_418011654925463?access_token="+ token;

        try
        {
            req = (HttpWebRequest)HttpWebRequest.CreateDefault(new Uri(aUrl));
            res = (WebResponse)req.GetResponse();
            sr = new StreamReader(res.GetResponseStream());
            string resultado = sr.ReadToEnd();
            res.Close();

            Response.Write(resultado);
        }
        catch (Exception ex)
        {
            Response.Write("erro: "+ ex.Message + " - " + ex.InnerException);
        }

        Response.End();
    }

【问题讨论】:

    标签: facebook facebook-graph-api facebook-insights


    【解决方案1】:

    我认为您的问题是由于您的“redirect_uri”不匹配造成的。我在尝试获取访问令牌时遇到了类似的问题。

    如果你同时改变你的

    string urlBase
    

    string urlBase = "https://tecnologia.chleba.net:94"
    

    您应该停止收到错误 400。

    希望这对你有用。

    【讨论】:

    • 伙计,第二个带有字符串 urlBase = "";他没有在他的代码中使用它!