Facebook API 400错误请求

时间:2012-02-17 08:22:14

标签: php facebook api

我正在尝试使用Facebook api来运行fql查询。我在PHP中设置了所有内容,代码如下:

  $app_id = 'APP_ID';
  $app_secret = 'APP_secret';
  $my_url = "url.com/facebook.php";


  $code = $_REQUEST["code"];

 //auth user
 if(empty($code)) {
    $dialog_url = 'https://www.facebook.com/dialog/oauth?client_id=' 
    . $app_id . '&redirect_uri=' . urlencode($my_url) ;
    echo("<script>top.location.href='" . $dialog_url . "'</script>");
  }

  //get user access_token
  $token_url = 'https://graph.facebook.com/oauth/access_token?client_id='
    . $app_id . '&redirect_uri=' . urlencode($my_url) 
    . '&client_secret=' . $app_secret 
    . '&code=' . $code;
  $access_token = file_get_contents($token_url);


  // Run fql query
  $fql_query_url = 'FQL_Query';
  $fql_query_result = file_get_contents($fql_query_url);
  $fql_query_obj = json_decode($fql_query_result, true);

使用上面的代码一切正常,但最近我决定更改我的网址结构,而不是通过 url.com/facebook.php 访问该网页我想通过 url.com/#facebook 即可。

当我对$ my_url变量进行此更改时,我收到以下错误。

[function.file-get-contents]: failed to open stream: HTTP request failed! HTTP/1.0 400 Bad Request

有什么想法吗?谢谢!

2 个答案:

答案 0 :(得分:0)

好吧,让我们从facebook应用程序设置开始吧。在应用程序设置中,您可以定义“画布URL”,如果您决定更改它,则不仅需要在代码中更改它,还需要在开发人员应用程序的应用程序设置中进行更改。

另一件事是,如果facebook使用网址调用您的网页,那么您在进行身份验证时必须在redirect_uri参数中使用完全相同的网址,它位于文档(http://developers.facebook.com/docs/authentication/)中。这是他们写的关于redirect_uri的内容:

  

redirect_uri必须位于您指定的网站网址的路径中   Developer App中Summary选项卡的Website部分。如果是的话   域的根,它应该以尾部斜杠结束。请注意,你的   redirect_uri不能是重定向器。

  

要验证您的应用,您必须通过授权   代码和您的应用程序秘密到Graph API令牌端点 - 以及   与上面使用的完全相同的redirect_uri - at   https://graph.facebook.com/oauth/access_token

现在,您决定更改网址(#)中的哈希值不是很好。这部分网址并不适合您尝试使用它的内容。只需谷歌“在网址中哈希部分”并阅读一下。

答案 1 :(得分:0)

我在extension=php_openssl.dll文件中添加了xampp/php/php.ini,在XAMPP中解决了这个问题。 在某些版本的XAMPP中,此行的注释类似于;extension=php_openssl.dll, 所以只需取消注释即可重新启动apache。