在Chrome 59中,Facebook认证打开选项卡而不是弹出窗口

7
我面临的问题就如标题所述。我使用Facebook认证(使用JavaScript SDK),以便用户可以登录到我的应用程序,并且在Chrome 59版本之前(58, 57, ...),当用户尝试登录时,Facebook弹出窗口会打开并请求Facebook凭据。但是,在Chrome 59中,弹出了一个新标签页而不是弹出窗口。问题在于这个标签页没有焦点,用户看不到它被打开了,或者有时它被打开并且一直在加载。
还有其他人遇到这个问题吗?如果是这样,是否有任何解决方法?
谢谢!
已解决
正如Raul Mangolin评论所述,这个问题已经被Facebook解决

我在 Facebook Bug Tracker 上打开了一个漏洞,并且已经被指派进行“进一步调查”。 https://developers.facebook.com/bugs/470345923308265/ - Raul Mangolin
谢谢!很高兴知道他们正在分析这个。 - Bruno Silvano
问题在其他多个网站上也出现了,包括我自己开发的网站。这一定是Chrome 59中的更改(错误或功能)。 - djk
1
Chromium bug: https://bugs.chromium.org/p/chromium/issues/detail?id=723655 - Jeff
1
嘿,Facebook已经修复了 \o/ https://developers.facebook.com/bugs/470345923308265/ - Raul Mangolin
2个回答

3

Chrome 59似乎会以不同的方式处理window.open中的location=yes。我猜这是一个错误,因为Chrome仍然显示地址栏,而且我找不到有关此更改的日志记录。

因此,如果您对弹出窗口的打开方式有任何影响,请暂时将其更改为location=no作为解决方法。

// Opens as new tab in Chrome 59
// Older versions and all other browsers open it as popup
window.open("https://www.facebook.com","","location=yes")

// Opens as popup also in Chrome 59
// Chrome, Firefox and Edge show location bar regardless; IE shows URL in title
window.open("https://www.facebook.com","","location=no")

自行测试:http://output.jsbin.com/hikeleyiwe

正如Raul Mangolin所指出的那样,Facebook已经意识到了这个问题:https://developers.facebook.com/bugs/470345923308265/


1
在Chrome 59中,如果将“location”或“toolbar”设置为“yes”,它将打开新标签页而不是弹出窗口。
只需像这样将它们设置为“no”:
“location=no, toolbar=no”
还有一个更简单的解决方案-根本不包括这些语句,然后弹出窗口将打开而不是新标签页。

“location-yes”对于流入的第三方授权/支付而言非常重要,可以确认弹出窗口实际上是第三方网站,而不是类似网络钓鱼网站(通过url和EV证书)。 - Ben Adams

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接