即使用户已登录,FB.getLoginStatus也会返回“未知”状态

时间:2016-01-13 09:07:43

标签: facebook facebook-graph-api facebook-javascript-sdk

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

3 个答案:

答案 0 :(得分:7)

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

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

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

答案 1 :(得分:2)

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

此问题的根本原因是,在FB.logout()上,Chrome未删除以某种方式影响fblo_<your-app-id>函数以返回FB.getLoginStatus()

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

答案 2 :(得分:0)

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