facebook-> getUser()方法返回0

时间:2012-12-04 04:37:33

标签: php facebook zend-framework

我正在使用我网站上的Facebook功能登录。问题是在成功验证后$facebook->getUser()方法返回0,因此它不会在其余代码之前。为了解决这个问题,我修改了我的APP ID和密钥,我也创建了新的APP,但仍无法正常工作。谷歌也做了很多东西,但没有取得任何成功。

以下是我的代码:

public function facebookregisterAction() {
require 'auth/src/facebook.php';

$facebook = new Facebook(array('appId' => 'xxxxxxxxxxxxxxx','secret' => 'xxxxxxxxxxxxxxxxxxxxxxx','cookie' => true));

$session = new Zend_Session_Namespace('user');
$user = $facebook->getUser();

if ($session->islogout != 1) {
       if ($user) {
            try {
                   $user_profile = $facebook->api('/me');                    
                }catch(Exception $e){}
       }
}

由于

1 个答案:

答案 0 :(得分:1)

作为一般答案,我发现从facebook-php-sdk目录中的example.php开始会很有帮助。

在我的情况下,我的测试应用程序的URL与站点URL不同。 example.php文件提供了一条错误消息,足以诊断和纠正问题。

这也是实际使用的一个很好的例子。

据说,有一部分你似乎失踪了。在API非常有用(除了获取公共信息之外)之前,用户必须访问您应用的Facebook登录URL。要查找此网址,请尝试:

$url = $facebook->getLoginUrl();

如果您需要登录,可以为用户提供点击链接,或者将用户静静地重定向到此URL。一个“Hello,World!” - 类型的开头就像是:

if ($user) {
  $url = $facebook->getLogoutUrl();
  $message = "Click here to log out";
} else {
  $url = $facebook->getLoginUrl();
  $message = "Click here to log in";
}

print "<a href=$url>$message</a>";

但是你会很快遇到example.php文件所涵盖的内容:当用户退出Facebook时,不会清除“访问令牌”(如会话ID)。您的应用程序仍将看到有效的用户对象,但任何访问Facebook的API调用都将失败。