0

我正在尝试一个简单的代码来验证用户在访问我的网站时是否登录到 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>
4

2 回答 2

1

实际上,我没有应用程序。

FB.getLoginStatus 获取用户关于你的应用的状态——没有应用,尝试调用这个方法是没有意义的。

只想知道用户是否登录到 facebook。

你不能那样做。

于 2012-11-07T15:38:07.137 回答
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 答案实际上都是正确的,可以避免这种“设计使然”的行为。

于 2019-02-07T23:26:05.797 回答