我有一个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。我怎样才能解决这个问题?
答案 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