0

我访问了以下 URL: http: //developers.facebook.com/docs/reference/php/facebook-api/ 我将第一个示例复制到了我的服务器,以替换我自己的应用程序的 appID 和密码。当我访问该页面时,它显示“请登录”,如代码中所示,当我按下该按钮时,应用程序重新加载并且它一直在说同样的事情。我已经登录了 Facebook,但即使我按下登录,也没有任何反应。

我想知道是否有人知道问题是什么?我在 index.php 被称为 src 的文件夹中有 SDK 文件,所以我编辑了“src/facebook.php”的路径?


编辑 - 我收到以下错误(已替换真实文件路径)。我刚刚发现这可能与代理有关?

发现错误:

FacebookApiException Object
(
    [result:protected] => Array
        (
            [error_code] => 7
            [error] => Array
                (
                    [message] => couldn't connect to host
                    [type] => CurlException
                )

        )

    [message:protected] => couldn't connect to host
    [string:Exception:private] => 
    [code:protected] => 7
    [file:protected] => filepath/src/base_facebook.php
    [line:protected] => 977
    [trace:Exception:private] => Array
4

2 回答 2

1

我认为这是问题所在:

catch(FacebookApiException $e) {
    // If the user is logged out, you can have a 
    // user ID even though the access token is invalid.
    // In this case, we'll get an exception, so we'll
    // just ask the user to login again here.
    $login_url = $facebook->getLoginUrl(); 
    echo 'Please <a href="' . $login_url . '">login.</a>';
    error_log($e->getType());
    error_log($e->getMessage());
  }  

Facebook 演示就是这样做的,这真的很烦人。它假定您获得的任何异常都是由于用户令牌过期,而可能是由于拼写错误或其他错误。

所以我要做的就是改变它来简单地显示 $e 的内容。

 catch(FacebookApiException $e) {
    echo 'Error found:';
    echo '<br />Type: '.$e->getType();
    echo '<br />Message: '.$e->getMessage();
    exit;  
 }  

然后至少你可以很容易地看到错误是什么。一旦你让它工作,一定要把它改回来。

如果您使用以下内容,您可以获得更多信息:

 catch(FacebookApiException $e) {
    echo 'Error found:';
    echo '<br /><pre>';
    print_r($e);
    echo '</pre>';
    exit;  
 }  

这将产生非常相似的数据页面。我通常会在顶部附近找到我需要的东西。

于 2013-02-06T23:57:34.140 回答
0

我会使用Fiddler来检查哪些位正在通过网络传输(或者这些位正在通过网络传输)。

于 2013-02-06T23:39:13.510 回答