Facebook fbsr和会话不会删除

时间:2012-01-06 18:40:12

标签: php javascript facebook-graph-api cookies

我有一个logout.php页面。通过单击附加了此javascript的注销来调用此方法:

 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会将某人记录下来。 php脚本不会删除fbsr和phpsessid cookie。我怎样才能解决这个问题?

2 个答案:

答案 0 :(得分:5)

对于某些应用程序,FB将fbsr cookie设置在“.your-domain.tld”域下(注意前一点)。除非您指定正确的域,否则不会删除cookie。试试这个,你就可以注销了:

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

这是一个FB错误,使得cookie无法在注销时被删除,因此您的$ fb-> getUser()API调用将返回以前的用户ID而不是NULL或0.这是FB世界;) 问候!

答案 1 :(得分:0)

我遇到了同样的问题,即使所有的cookie都是正确的(双重检查) 对我来说似乎有用的是  setcookie($ cookie_name,'',null,'/','。'。$ base_domain); 请注意空值而不是:time() - 3600

老实说,我不知道为什么这样有效,时间() - 3600没有,但我交叉检查,它的工作原理...... HTH