Facebook FB.getLoginStatus正在返回状态';未知';即使用户已登录

Facebook FB.getLoginStatus正在返回状态';未知';即使用户已登录,facebook,facebook-graph-api,facebook-javascript-sdk,Facebook,Facebook Graph Api,Facebook Javascript Sdk,我启用了第三方cookies,所以这不是问题所在。我正在使用google Chrome,facebook javascript SDk 2.5版,当我第一次登录时一切都正常,但当我注销并尝试重新登录时,它会返回状态:“未知”在注销后使用以下代码解决问题: document.cookie.split(";").forEach(function(c) { document.cookie = c.replace(/^ +/, "").replace(/=.*/, "=;expires=" +

我启用了第三方cookies,所以这不是问题所在。我正在使用google Chrome,facebook javascript SDk 2.5版,当我第一次登录时一切都正常,但当我注销并尝试重新登录时,它会返回
状态:“未知”

在注销后使用以下代码解决问题:

document.cookie.split(";").forEach(function(c) {
    document.cookie = c.replace(/^ +/, "").replace(/=.*/, "=;expires=" + new Date().toUTCString() + ";domain=.example.com;path=/");
});

将example.com替换为您的域名。

我在注销后遇到类似问题。似乎
FB.logout()
创建了一个
fblo\uuz
cookie,该cookie的过期日期为1年,它永远不会消失,即使您再次登录后也不会消失。在某些情况下,这个特定的cookie似乎会阻止
FB.getLoginStatus()
返回正确的状态。手动删除cookie可以修复问题,但我无法解释为什么它不会被成功的
FB.login()
call自动删除我在Chrome中也遇到了这个问题。然而,在Firefox中,当用户之前登录时,它的状态返回为
connected

此问题的根本原因是,在
FB.logout()
上,Chrome没有删除cookie
fblo
,这在某种程度上影响了
FB.getLoginStatus()
函数返回
未知

修正:在调用
FB.logout()
时,您可以通过编程方式删除cookie
fblo


可能与这里的问题相同:在我的例子中,我切换了允许的URI并得到了此消息。删除Cookie解决了问题。如果在localhost上运行,只需将域更改为
localhost
,但这会删除该域的所有Cookie。可能不是个好主意!请看@nagesh答案。更有意义
FB.logout(function(response) {
  deleteCookie("fblo_" + fbAppId); // fblo_yourFBAppId. example: fblo_444499089231295
});

function deleteCookie(name) {
  document.cookie = name +'=; Path=/; Expires=Thu, 01 Jan 1970 00:00:01 GMT;';
}