Facebook fbsr和会话不会删除

Mel*_*ner 2 javascript php cookies facebook-graph-api

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

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

在注销页面上我运行了这个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']);
}
Run Code Online (Sandbox Code Playgroud)

问题是javascript会将某人记录下来.php脚本不会删除fbsr和phpsessid cookie.我该如何解决这个问题?

小智 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世界;)问候!