为什么auth.登录facebook JS SDK事件触发页面加载



我在使用facebook JS SDK时遇到了一点麻烦。

"身份验证。如果用户登录到facebook并使用我的应用程序进行身份验证,Login '事件处理程序将在每次页面加载时触发。

然而,真实。如果相反的情况(用户未登录或未通过身份验证),注销事件处理程序不会在每次页面加载时触发

有人知道为什么会这样吗?

根据FB。getLoginStatus页面:

auth.login

这个事件在你的应用程序第一次注意到用户时被触发(换句话说,当它还没有一个有效的会话时获得一个会话)。

auth.logout

当你的应用程序注意到不再有一个有效的用户(换句话说,它有一个会话,但不能再验证当前用户)时触发此事件。

实际上,这些事件是由用户会话中的更改触发的。

如果你使用的是最新版本的JavaScript SDK,用户会话应该自动维护,如果你有cookie参数设置为true,这应该初始化JavaScript SDK与当前用户会话(如果可用)。

FB.init({
  appId: 'YOUR_APP_ID', 
  cookie: true, 
  xfbml: true,
  oauth: true
});

我也有这个问题,虽然我有cookie参数设置在我的FB.init函数。使用Chrome开发工具,我可以看到JS SDK已经创建了一个cookie,但是auth.login事件在每次页面加载时都会触发。

我重定向到url.com?login时,PHP踢在登录用户到我的应用程序,或创建一个新的帐户,如果它不存在。登录完成后,PHP再次重定向到url.com。目前,这会导致auth.login事件触发和PHP重定向回页面之间的无限循环。

此刻,我正在做一些检查在JS中,看看是否PHP有一个登录用户或不做重定向之前,但从阅读文档,我不应该这样做。

其他人有过这样的经历吗?

我有同样的问题。每次页面加载时都会触发登录…在不同的机器和不同的浏览器上玩了几个小时后仍然无法找到解决方案

facebook已经有一个bug条目:https://developers.facebook.com/bugs/478371735509917

最新更新