2012-01-06 76 views
2

我有一个logout.php页面。Facebook的fbsr和会话不会删除

FB.getLoginStatus(function(response) { 
    if (response.status === 'connected') { 
     button.onclick = function() { 
     FB.logout(function(response) { 
      window.location = 'logout.php'; 
     }); 
     } 
    } 
}); 

在退出页面我有这样的PHP代码运行:

if (isset($_COOKIE['fbsr_' . $app_id])) { 
    setcookie('fbsr_' . $app_id, $_COOKIE['fbsr_' . $app_id], time() - 3600, "/"); 
    setcookie('PHPSESSID', $_COOKIE['PHPSESSID'], time() - 3600, "/"); 

    unset($_COOKIE['fbsr_' . $app_id]); 
    unset($_COOKIE['PHPSESSID']); 
} 

的问题是,JavaScript并登录有人在此被点击注销有这个JavaScript的重视它叫。 php脚本不会删除fbsr和phpsessid cookie。我怎样才能解决这个问题?

+0

还有我尝试:$ facebook-> destroySession();它仍然不会注销。 – 2012-01-06 18:41:18

+0

而不是'unset($ _ COOKIE ['PHPSESSID']);'使用'session_destroy();'。这将确保会话清理。 – 2012-01-06 18:43:16

+1

你的意思是你没有注销Facebook,或者你没有注销你的网站? 'FB.logout'应该处理从Facebook登出,所以你不需要触摸'fb_sr *'cookie。 – 2012-01-06 18:45:07

回答

5

对于某些应用程序,FB在“.your-domain.tld”域下设置fbsr cookie(注意前面的点)。除非您指定正确的域名,否则Cookie不会被删除。试试这个,你必须注销工作:

setcookie('fbsr_' . $appID, '', time()-3600, '/', '.'.$_SERVER['SERVER_NAME']);

这是一个FB的错误,使饼干在注销被删除,所以你的$ FB->的getUser()API调用返回前的用户ID,而不是的NULL或0.这是FB世界;) 问候!

+0

不适用于我。 – Pons 2013-01-03 11:21:14

0

我有同样的问题,即使所有的饼干标准杆是正确的(doublechecked) 似乎什么工作对我来说,是 的setcookie($ cookie_name, '',NULL, '/', ''。$ BASE_DOMAIN ); 注意空值,而不是:时间() - 3600

老实说,我不知道为什么,工程和时间() - 3600没有,但我过检查,它的工作原理... HTH