我正在尝试一个简单的代码来验证用户在访问我的网站时是否登录到了facebook。
显示警报1和2,全部显示。
为什么不显示警报3 4 5? 我尝试了很多例子,但没有任何作用:( :(
<!DOCTYPE html>
<html>
<head>
<script src="http://connect.facebook.net/en_US/all.js"></script>
<script>
window.onload = function(){
alert("1");
FB.init({ apiKey: '203642573046113', status: true });
alert("2");
FB.getLoginStatus(function(response) {
alert("3");
if (response.status === 'connected') {
alert("4");
} else if (response.status === 'not_authorized') {
alert("5");
} else {
alert("6");
}
});
};
</script>
</head>
<body>
HELLO WORLD
</body>
</html>
答案 0 :(得分:1)
实际上,我还没有app。
FB.getLoginStatus获取用户关于您的应用的的状态 - 没有应用程序,尝试调用此方法没有意义。
只想知道用户是否已登录Facebook。
你做不到。
答案 1 :(得分:0)
问题是这个https://developers.facebook.com/bugs/1657864107810379/
我尝试在该页面上发布以下内容,但出现错误。
关于上述问题-这适用于您的问题,因为我假设您在某个时候发布了FB.Logout()
。这将设置一个cookie,根据设计,它会阻止此“ getLoginStatus”再次运行。
还是个问题。
它是否按设计工作-我相信是的。 然而,仅仅因为有时按设计工作并不意味着它不是一个可怕的想法。
几个Stackoverflow问题引用了此错误和此问题 FB.getLoginStatus not working
根本上这是问题所在: (https://developers.facebook.com/docs/reference/javascript/FB.getLoginStatus)
用户没有登录Facebook或明确退出了您的应用程序,因此它不会尝试连接到Facebook,因此,我们不知道他们是否已对您的应用程序进行身份验证。 (未知)
因此,如果您注销,它将设置cookie fblo_629812369426907(这是我的应用ID)
然后,这是设计使然,因此不会再次检查登录状态。
需要设置FB.Logout(true)才能设置愚蠢的FBLO cookie。
我希望我网站上的用户注销,但是仍然知道他们已经登录Facebook,以使“使用Facebook登录”选项更加突出。
因此看来,任何建议删除此cookie的Stackoverflow答案实际上都是正确的,可以避免这种“设计使然”的行为。