Facebook Connect Bug - JavaScript刷新

时间:2010-09-12 15:24:24

标签: javascript facebook

Facebook Connect最近发生了一个错误,导致权限弹出窗口无法关闭并刷新父窗口。相反,在用户批准后,它会尝试直接在弹出窗口中加载页面,这是一种糟糕的用户体验,并且真正损害了我们的注册。您可以使用Facebook Connect注册我们的网站来查看错误:http://alltrails.com

用户连接Facebook Connect后页面的URL在权限弹出窗口中输入错误的格式为:

http://alltrails.com/?installed=1&session={"session_key":"2.Gu0duOqdElNjXRac5wnetw__.3600.1283799600-1486832834","uid":1486832834,"expires":1283799600,"secret":"tKFaEgBTF9RJeuQZfYUSCw__","base_domain":"alltrails.com","sig":"a8dd9f75418b530ae6c3d935e14274c4"}

我希望有一个比我自己更好的人可以建议我们可以添加到我们主页的简单代码片段,只有在页面URL包含'?installed = 1'时才会调用它,并且会执行以下操作允许与Facebook Connect相同的用户体验:

  1. 关闭权限弹出窗口
  2. 在原始父窗口中加载适当的页面http://alltrails.com/register/facebook
  3. 我尝试过一些不同的方法但是没有任何运气让它正常工作。在此先感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

这是一个(未经证实的)错误。

http://bugs.developers.facebook.net/show_bug.cgi?id=12260

希望获得更多选票以便得到修复 - 投票给人们!

与此同时,我(尝试)采用以下“创造性解决方法”:

  1. 将逻辑添加到我的Default.aspx页面,以检测他们在弹出窗口中重定向到的URL。
  2. 重定向到我的页面,FacebookInboundAuthorization.aspx,保留查询字符串。
  3. 在加载该页面时,注册一些JavaScript以关闭弹出窗口并手动触发我的按钮的“onlogin”事件处理程序。
  4. 编辑 - 另一种可能的解决方案

    所以我为“断开Facebook连接”按钮做了类似的事情,该按钮有一个类似的错误,从第1天开始就在FBC中。如果用户已经登录,你点击“断开Facebook连接”按钮,“onlogin”处理程序不会被触发。

    所以我最终做的是用我自己的常规锚标签取代Facebook Disconnect按钮,模仿Facebook CSS。这样我就可以完全控制点击事件(触发我想要的功能)。

    因此,这个原则可以(理论上)应用于当前的bug。

    也就是说,在客户端执行FB.Init之后:

    1. 使用FB.Connect.ifUserConnected
    2. 检查FB身份验证状态
    3. 如果用户已连接,请隐藏常规FB:登录按钮,并显示“假”FB登录按钮。将“onlogin”功能从常规FB:Login按钮复制到您的假按钮作为onclick事件。
    4. 您的假FB登录按钮将是常规锚标记,并将相同的CSS应用于常规FB登录按钮。

      基本上,如果用户已经连接,我们并不需要FB干预进行身份验证,我们可以随心所欲地执行任务(请求权限,重定向等)。

      这应该有效。

      不幸的是,我需要处理更高优先级的事情,但听起来这是你的首要任务。

      所以请放手一搏,希望它有所帮助。