当用户第一次访问我的网站的登录屏幕时,我让Facebook Connect确定用户是否登录Facebook并重新加载页面如果为true:
<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>
Run Code Online (Sandbox Code Playgroud)
重新加载页面时,我的后端PHP代码会检查用户是否登录到Facebook,然后自动将其登录到我的站点:
$Facebook = new Facebook(MY_API_KEY, MY_APP_SECRET);
if ($Facebook->get_loggedin_user()) {
// Log the user in.
}
Run Code Online (Sandbox Code Playgroud)
那部分工作正常.问题在于注销功能.我的注销链接目前看起来像这样:
<a href="#" onclick="FB.Connect.logoutAndRedirect('http://my.url/logout/');">Log Out</a>
Run Code Online (Sandbox Code Playgroud)
当点击它时,用户成功退出Facebook,但后端Facebook PHP对象仍然认为用户已登录($Facebook->get_loggedin_user()仍返回其用户ID),因此我的登录代码会自动再次登录.
所以我发现的问题是即使Facebook Connect将用户注销,后端Facebook PHP对象仍然认为用户已登录.有人知道如何克服这个问题吗?我可以不使用我的PHP代码自动登录用户吗?
谢谢你的帮助!
我刚刚帮助过有类似问题的人.基本上,你需要使facebook会话到期,然后清理cookie(这有点棘手,而且在文档中没有真正解释得很好):
如何使用PHP和Zend中的Facebook Connect注销用户?
如果它有帮助,请投票;)
| 归档时间: |
|
| 查看次数: |
9912 次 |
| 最近记录: |