我有一个使用 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(使用前将#替换为@)