我正在使用我网站上的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){}
}
}
由于
答案 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调用都将失败。