我有一个站点使用 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,因此页面进入接收身份验证事件、刷新页面的无限循环没有 cookies 和重复。问题似乎出在这台计算机上,并且无论我使用哪种浏览器以及我使用哪种操作系统都会发生。
它适用于:
- 使用 Internet Explorer 的 friend 的 PC
- 使用 Firefox 的 friend 的 PC friend 的 PC
- 在 VirtualBox 的 Ubuntu 10.10 中使用 Firefox 的 friend PC
- 与新计算机在同一子网中的另一台 PC
- 从 Ubuntu 10.10 live CD 64 位启动的新计算机
不适用于:
- 使用 Internet Explorer 的新电脑
- 使用 Chrome 的新电脑
- 使用 Firefox 的新电脑
- 新电脑在 VirtualBox 的 Ubuntu 10.10 中使用 Firefox
这会不会是我的网卡或网络配置引起的?
更新: 它开始工作时就像它失败时一样神秘。
最佳答案
这可能是 the same thing I had to deal with .在您的代码中我看不到异步初始化:
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 文件。
关于javascript - 为什么 Facebook JavaScript 身份验证不能在特定计算机上运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5130708/