2010-09-12 48 views
0

Facebook连接有一个最近的错误,导致权限弹出窗口不关闭并刷新父窗口,因为它设计的目的。相反,在用户批准后,它会尝试直接在弹出窗口中加载该页面,这是一种非常糟糕的用户体验,并且会严重影响我们的注册。您可以通过使用Facebook Connect我们的网站注册看到错误:http://alltrails.comFacebook连接错误 - JavaScript刷新

页面后用户的URL连接,Facebook的连接不正确的权限加载弹出窗口的形式为:

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"} 

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

  1. 关闭的权限弹出窗口
  2. 装入适当的页面http://alltrails.com/register/facebook在原来的父窗口

我试图做到这一堆不同的方式,但还没有任何运气得到它能正常工作。在此先感谢您的帮助!

+0

嗨 - 即时通讯具有相同的问题(http://stackoverflow.com/questions/3697867/facebook-connect-edge-case-connect-with-facebook-when-already-logged-in)。只有在用户已经通过Facebook验证后才会发生,并且他们点击“连接Facebook”按钮。它看起来像JavaScript Auth/OAuth图形API世界正在发生冲突。我讨厌Facebook。 – RPM1984 2010-09-13 06:11:23

+0

C. - 顺便说一句 - 我们确定这是一个Facebook的错误?你有错误参考吗? – RPM1984 2010-09-13 06:28:10

回答

1

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

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

希望它获得更多的选票,这样会将它固定 - 投票的人!

在此期间,我(试图)采用下面的“创意的解决办法”:

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

编辑 - 另一种可能的解决方案

所以我做这样的事情的按钮,“从Facebook断开”,这也有类似的错误,这已经在FBC从1天如果用户已经登录,并且您单击“Disconnect from Facebook”按钮,“onlogin”处理程序不会被触发。

所以我最终做的是用我自己的常规锚标签来替换Facebook Disconnect按钮,模仿Facebook的CSS。这样我可以完全控制点击事件(激发我想要的功能)。因此,这个原则可以(理论上)应用于这个当前的错误。

也就是说,你在客户端做FB.Init后:使用FB.Connect

  1. 检查FB权威性的地位。ifUserConnected
  2. 如果用户已连接,请隐藏常规FB:Login按钮,并显示您的“假”FB登录按钮。作为onclick事件,从常规FB:Login按钮复制到“onlogin”功能。

您的假FB登录按钮将是一个常规锚定标记,同样的CSS应用于常规的FB登录按钮。因此,基本上,如果用户已经连接,我们并不真的需要FB的干预进行身份验证,我们可以做任何我们想要的(请求perms,重定向等)。

这应该工作。

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

所以给一个去,希望它有帮助。

+0

@Downvoter - 这个问题的答案是“它的Facebook bug” - 我提供了一个链接。对我而言,这是有帮助的,因此不应该被低估。 – RPM1984 2010-09-13 12:39:02

+0

@ RPM1984 - 您可以提供您在FacebookInboundAuthorization.aspx中使用的JavaScript来关闭弹出窗口,然后在父窗口中触发事件处理程序?这基本上是我无法想象如何去做的。谢谢! – 2010-09-14 15:18:35

+0

@Russell C - 不幸的是我已经尝试过,但似乎无法得到我的onlogin回调函数的句柄。事实上FB.init发生在页面加载后并不容易。我正在考虑不采取上述“解决方法”,因为他们已经确认了这个错误,并且正在修复它,所以任何努力都基本上被浪费了。 – RPM1984 2010-09-14 21:56:15