为什么 Facebook JavaScript 身份验证无法在特定计算机上运行?

2024-02-29

我有一个使用 Facebook JavaScript API 的网站,允许用户通过 Facebook 登录到 Ruby on Rails 应用程序。当用户单击登录或注销时,Facebook 代码会进行身份验证,然后引发一个事件并提供带有身份验证参数的 cookie。该 cookie 被发送到我的服务器,我用它来进行身份验证。这已经工作了一段时间了。

  // Connnect with Facebook.
  $('.fbLogout').click(function() {
      FB.logout();
  });
  $('.fbLogin').click(function () {
      FB.login();
  });
  FB.init({appId: '163691796982300', status: true, cookie: true, xfbml: true});
  FB.Event.subscribe('auth.sessionChange', function() {
      location.reload();
  });

我最近买了一台新计算机,但我的网站无法在这台计算机上运行。 Facebook 登录 UI 似乎可以工作,auth.sessionChange事件被引发,但看起来从未提供 cookie,因此页面进入接收身份验证事件的无限循环,刷新没有 cookie 的页面并重复。问题似乎出在这台计算机上,无论我使用哪种浏览器以及使用哪种操作系统,问题都会发生。

它适用于:

  • 使用 Internet Explorer 的朋友的电脑
  • 使用 Firefox 的朋友的电脑 朋友的电脑
  • 在 VirtualBox 中使用 Ubuntu 10.10 中的 Firefox 的朋友 PC
  • 与新计算机位于同一子网中的另一台 PC
  • 从 Ubuntu 10.10 Live CD 64 位启动的新计算机

不适用于:

  • 使用 Internet Explorer 的新计算机
  • 使用 Chrome 的新电脑
  • 使用 Firefox 的新电脑
  • 在 VirtualBox 中的 Ubuntu 10.10 中使用 Firefox 的新计算机

这可能是我的网卡或网络配置造成的吗?

更新: 它开始工作时就像它失败一样神秘。


这可能是我必须处理同样的事情 https://stackoverflow.com/questions/6468103/how-to-properly-handle-session-and-access-token-with-facebook-php-sdk-3-0。在您的代码中我看不到异步初始化:

window.fbAsyncInit = function() {
    FB.init({
          appId  : fb_appId,
          status : true, // check login status
          cookie : true, // enable cookies to allow the server to access the session
          xfbml  : true,  // parse XFBML
          oauth : true //enables OAuth 2.0
    });
};

这对于保证在调用 init 方法之前完全加载 Facebook JavaScript SDK 非常重要。因此它可能突然开始工作,因为浏览器已经缓存了 JavaScript 文件。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么 Facebook JavaScript 身份验证无法在特定计算机上运行? 的相关文章

随机推荐