为什么auth.login facebook JS SDK事件会在页面加载时触发?

时间:2011-08-11 20:59:38

标签: javascript facebook facebook-graph-api facebook-javascript-sdk

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

如果用户登录到facebook并通过我的应用程序进行身份验证,则'auth.login'事件处理程序将在每个页面加载时触发。

但是,如果相反的情况为真(用户未登录或未经过身份验证),则auth.logout事件处理程序不会在每个页面加载时触发

有谁知道为什么会这样?

3 个答案:

答案 0 :(得分:1)

根据FB.getLoginStatus页面:

<强> auth.login

  

当您的应用首次通知用户时(换句话说,在没有有效会话的情况下获取会话),会触发此事件。

<强> auth.logout

  

如果您的应用注意到不再有效用户(换句话说,它有会话但无法再验证当前用户),则会触发此事件。

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

如果您使用最新版本的JavaScript SDK,那么如果您将cookies参数设置为true,则应自动维护用户会话,这应该使用当前用户会话(如果可用)初始化JavaScript SDK。

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

答案 1 :(得分:1)

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

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

目前我正在对JS进行一些检查,以确定在执行重定向之前PHP是否有登录用户,但是从阅读文档开始,我不应该这样做。

还有其他人经历过这个吗?

答案 2 :(得分:0)

我有同样的问题。每次加载页面时都会触发登录...在使用不同浏览器的不同计算机上播放数小时后仍然无法找到解决方案

Facebook上已有错误输入:https://developers.facebook.com/bugs/478371735509917