当用户首次点击我网站的登录屏幕时,我让 Facebook Connect 确定用户是否登录 Facebook,如果是,则重新加载页面:
<script type="text/javascript" src="http://static.ak.connect.facebook.com/js/api_lib/v0.4/FeatureLoader.js.php"></script>
<script type="text/javascript">
FB.init('MY_API_KEY', '/xd_receiver.htm', { 'reloadIfSessionStateChanged': true });
</script>
重新加载页面时,我的后端 PHP 代码会检查用户是否登录 Facebook,然后自动将他们登录到我的网站:
$Facebook = new Facebook(MY_API_KEY, MY_APP_SECRET);
if ($Facebook->get_loggedin_user()) {
// Log the user in.
}
那部分工作正常。问题出在注销功能上。我的注销链接当前如下所示:
<a href="#" onclick="FB.Connect.logoutAndRedirect('http://my.url/logout/');">Log Out</a>
单击该按钮后,用户已成功从 Facebook 注销,但后端 Facebook PHP 对象仍认为用户已登录($Facebook->get_loggedin_user()
仍返回其用户 ID) ,所以我的登录代码会自动再次登录。
所以我发现的问题是,即使 Facebook Connect 将用户注销,后端 Facebook PHP 对象仍然认为用户已登录。有谁知道如何克服这个问题?我不能使用我的 PHP 代码自动登录用户吗?
感谢您的帮助!
最佳答案
我刚刚帮助了遇到类似问题的人。基本上,您需要使 facebook session 过期,然后清理 cookie(这有点棘手,并且在文档中没有很好地解释):
How to log out users using Facebook Connect in PHP and Zend?
如果有帮助的话请投票;)
关于php - Facebook Connect 注销后,Facebook PHP 类仍然认为用户已登录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1615918/