通过Chrome网上应用店安装页面时,Facebook登录名会挂在“ XD代理”上
-
28-10-2019 - |
题
已创建以下Web应用程序:
我还将它添加到Chrome网上应用店中:
https://chrome.google.com/webstore/detail/idalgghcnjhmnbgbeebpdolhgdpbcplf
问题在于,当转到Chrome网上应用店并安装此应用时,Facebook登录窗口会挂在“ XD代理”窗口中。当连接本身起作用时,此空白窗口可能会使用户感到困惑。
我做了研究,这似乎是Chrome问题: https://code.google.com/p/chromium/ issues / detail?id= 59285#c26
如果您从Chrome卸载应用程序,问题将消失。
有没有解决此问题的方法?
类似的stackoverflow问题:
- 在Chrome中锁定Facebook连接登录窗口
- FB.login对话框在Google Chrome上不会关闭
- facebook连接在Chrome上弹出空白
- https://stackoverflow.com / questions / 4423718 / blank-page-with-fb-connect-js-sdk-on-permission-request请求
如果有帮助,这是我的Facebook连接: 通用标签
解决方案
由于reekogi的回复,我能够解决此问题。这是完整的实现:
为了避免XD代理问题,您必须不使用FB.login而连接到Facebook,这可以通过手动将用户重定向到Facebook页面来实现。
我的代码中具有此登录功能: 通用标签
我替换为以下代码: 通用标签
新代码将打开一个弹出窗口,该弹出窗口连接到Facebook,并返回到'next'参数中指定的url。我在此回调URL中添加了一些额外的参数,以便javascript代码可以检查它并关闭弹出窗口。
当Facebook重定向到回调URL时,将执行以下代码: 通用标签
URL_PARAMS只是一个包含所有url参数的帮助对象。
我仍然认为这是Chrome的问题,但是由于此解决方法已经成功解决了我的问题,因此我将此问题标记为已解决。
解决方案
您可以调用javascript重定向来获取权限,然后重定向回 http://www.web-allbum.com/connected uri?
我在这里详细介绍了此方法-> 粉丝页面上的权限
编辑:
OAuth 2.0纳入要求后,我将不再使用我之前演示的方法。
以下是适用于OAauth 2.0的代码(response.session
替换为response.authResponse
)
通用标签
经过尝试和测试,在chrome中效果很好。
其他提示
我没有尝试使用Cesar提出的解决方案,因为我更喜欢使用Facebook的官方javascript SDK。
尽管如此,我想补充一些看法:
-
实际上,阻止问题仅在从Chrome网上应用店安装后在Chrome上发生。卸载Web应用程序即可解决该问题。(已通过传统身份验证方法进行了测试,未使用
oauth
2.0)。手动关闭XD代理弹出窗口后,我的应用程序运行正常。 -
切换到异步
FB.init()
2.0选项并启用oauth
2.0选项后,我的应用程序甚至在登录时({authResponse: null, status: "unknown"})
都没有获得有效的Facebook连接状态。再次,从Chrome Web Store卸载它,就可以了...({authResponse: Object, status: "connected"})
-
在任何一种情况下,Safari都不会出现问题。
在IE8中-这可能是由您的Flash版本引起的。我尝试了一切,但直到禁用Flash为止,无济于事。此博客的更多详细信息:http://hustoknow.blogspot.com/2011/06/how-facebooks-xdproxyphp-seemed-to-have.html#comment-form
在Chrome中打开一个新的浏览器标签,然后查看是否已安装Facebook“ App”。如果是这样,请将其拖动到右下角以进行卸载。卸载后,XD代理即可使用。
所有浏览器都遇到相同的问题。当用户单击“登录”按钮时,弹出窗口打开并挂起;除非用户终止了浏览器进程,否则它将导致CPU的高负载。如果用户设法看到“允许”按钮并单击它,则它出现了“ xd代理”空白窗口,没有任何反应。那是问题。
经过长时间的研究,我注意到代理setInterval / clearInterval / setTimeout / clearTimeout方法的新JS代码导致了此问题。代码如下: 通用标签
删除这些行解决了我的问题。也许对经历相同的人有所帮助。
看来这已在Chrome中修复。Mac Chrome 15.0.874.106中不再对我们如此
另一种解决方法是在调用FB.init()
后使用此代码:
通用标签
弹出窗口保持打开且空白,但是我发现在我的Chrome Web Store应用程序中,使用此代码时身份验证通过。
此错误也已归档在Facebook开发人员的位置: http://developers.facebook.com/bugs/278247488872084
我在IE9中也遇到了同样的问题,它似乎源于升级到Flash Player10。建议的答案对我来说已经行不通了,因为找到了<一个href=“ http://bugs.developers.facebook.net/show_bug.cgi?id=12112” rel=“ nofollow noreferrer”>在Facebook上打开错误。但是 Henson 发布了一个答案在类似的问题上为我解决了这个问题。在网站主站的JavaScript中,我删除了这些行 通用标签
,现在可以使用了。(注:我没有检查IE8是否发布这些行是为了克服退货。)