使用Facebook自动登录PHP SDK不起作用

时间:2012-04-18 12:50:29

标签: php facebook facebook-php-sdk

我使用Facebook PHP SDK将facebook与我的网站集成,我已登录到我的Facebook帐户,但是当我进入我的网站时,自动登录不会发生?

    $facebook = new Facebook(array(
      'appId'  => XXXXXX,
      'secret' => XXXXXXXXXXXXXX,
    ));



$user = $facebook->getUser();

// Login or logout url will be needed depending on current user state.
if ($user) {
    $logoutUrl = $facebook->getLogoutUrl();
} else {
    $loginUrl = $facebook->getLoginUrl();
}

此处$user值为'0',在我进入Facebook帐户后进入我的网页。

如果我通过我的网站登录facebook登录。它起作用,$user会得到一个id。

1 个答案:

答案 0 :(得分:0)

  

但是当我进入我的网站时,自动登录不会发生?

单独的PHP SDK无法自动登录重新访问您网页的用户,因为它无法读取在自己的域下设置的Facebook的Cookie。

您必须将其与JS SDK结合使用,JS SDK可以执行跨域请求,因此能够确定当前登录到Facebook的用户以及他们是否已访问过您的网页并使用过您的应用。

FB.getLoginStatus是用于此的方法;如果它返回用户已连接到您的应用程序,您可能会触发从JavaScript重新加载您的页面,以便PHP SDK也将知道用户。 (如果您没有重新加载页面,PHP只会在用户下次点击您页面中的链接后才知道该用户,从而自动触发对您服务器的下一个请求。)