0

我在我的网站中使用 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){}
       }
}

谢谢

4

1 回答 1

1

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

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

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

话虽如此,您似乎缺少了一部分。用户必须先访问您应用的 Facebook 登录 URL,然后 API 才会非常有用(除了获取公共信息之外)。要查找此 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 调用都会失败。

于 2012-12-04T04:43:20.053 回答