2012-04-18 141 views
0

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

$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。

回答

0

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

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

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

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