Facebook Graph API:远程服务器返回错误:(400)错误请求

时间:2015-03-10 20:17:32

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

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

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

但在此之后,当我提出一些广告帐户,广告系列等广告时,我收到消息:“远程服务器返回错误:(400)错误请求。”

这是我的代码:

Default.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();
    }

1 个答案:

答案 0 :(得分:2)

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

如果你改变了

string urlBase

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

你应该停止接收错误400。

希望这适合你。