FB.getLoginStatus 返回状态 'unknown' 即使用户已登录

FB.getLoginStatus is returning status 'unknown' even when the user is logged in

我启用了第三方 cookie,所以这不是问题所在。我正在使用 google Chrome、facebook javascript SDK version 2.5,第一次登录时一切正常,但是当我注销并尝试重新登录时,它正在返回 status: 'unknown'

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

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

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

注销后我遇到了类似的问题。 FB.logout() 似乎创建了一个 fblo_<your-app-id> cookie,其有效期为 1 年并且永远不会消失,即使您再次登录后也不会消失。在某些情况下,这个特定的 cookie 似乎还会阻碍 FB.getLoginStatus() 返回正确的状态。手动删除 cookie 可以解决问题,但我不能说为什么它没有被成功 FB.login() 调用

自动删除

我在 Chrome 也遇到过这个问题。但是,在 Firefox 中,它按预期工作,状态 returned 为 connected 当用户之前登录时。

此问题的根本原因是,在 FB.logout() 上,Chrome 没有删除 cookie fblo_<your-app-id>,这会以某种方式影响 FB.getLoginStatus() 到 [=26= 的功能] unknown

修复:在调用 FB.logout() 时,您可以通过编程方式删除 cookie fblo_<your-app-id>

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;';
}