Meteor 应用程序 - facebook 登录 - 弹出窗口未关闭

Posted

技术标签:

【中文标题】Meteor 应用程序 - facebook 登录 - 弹出窗口未关闭【英文标题】:Meteor app - facebook login - popup doesn't close 【发布时间】:2016-03-09 16:03:35 【问题描述】:

我使用 facebook 登录的流星应用程序似乎可以正常工作,只是登录弹出窗口永远不会关闭。弹出窗口保持打开状态,直到重新加载应用程序。我什至不知道从哪里开始调试这个...... 弹出窗口为空白,检查显示:

<p id="completedText" style="display:none;">
    Login completed. <a href="#" onclick="window.close()">
      Click here</a> to close this window.
  </p>

style=display:none 可能是弹出窗口出现空白的原因,但我不知道如何更新该样式。另外,如果我从控制台执行 window.close(),弹出窗口会消失,但应用程序不会注册登录。

顺便说一句,这个错误只在我使用我的域名使用我的应用程序时出现,当我从 IP 地址调用它时,它工作得很好。

【问题讨论】:

您能告诉我您使用哪些软件包吗?您可以使用 $('.elementClass').hide() 之类的 JQuery 手动关闭它,但您应该检查是否有错误,如果没有则隐藏它。 accounts-facebook、accounts-ui、service-configuration 是我认为与此问题相关的软件包。有一个与阻塞框架有关的错误:***.com/questions/35891773/…,但显然它不应该阻止窗口关闭? @Luna 实际上,facebbok 弹出窗口没有显示允许用户关闭窗口的按钮: @MathieuK。你找到解决问题的方法了吗?我面临同样的问题。 Twitter 对我来说工作正常,但 Facebook 不会因为哪个用户未注册而关闭弹出窗口。 我在下面发布了我的解决方案作为答案 【参考方案1】:

当我开始使用accounts-google 时,我遇到了同样的问题。

这是因为我在重定向 URL 中混合了 httphttps

【讨论】:

【参考方案2】:

显然这是 ios 的一个已知错误,可以通过更改 loginStyle 参数来解决:

通常,基于弹出窗口的流程更可取,因为用户不必在登录流程结束时重新加载整个应用程序。但是,基于弹出的流程需要浏览器功能,例如 window.close 和 window.opener,这些功能并非在所有移动环境中都可用。特别是,我们建议在以下环境中使用 Meteor.loginWith( loginStyle: "redirect" ):

在 UIWebViews 内部(当您的应用在移动应用中加载时) 在 iOS8 上的 Safari 中(由于 bug,不支持 window.close)

Meteor docs

【讨论】:

但应用程序的 loginStyle 无法更改,因为它被硬编码为弹出窗口。 不,不是。您可以在设置特定服务时更改它,如果您已经设置,则可以在 mongo 中更改它。 @Davinder 当应用程序被打包为混合 Cordova 应用程序时,您是对的:loginStyle 不再适用,应用程序始终使用新的 InAppBrowser 窗口。不幸的是,Cordova 插件在这种情况下有一个错误。见***.com/questions/40105055/…

以上是关于Meteor 应用程序 - facebook 登录 - 弹出窗口未关闭的主要内容,如果未能解决你的问题,请参考以下文章

Ngrok 和 Meteor 的 Facebook 身份验证问题

Meteor Mongo 数据库设计用户帐户

怎么评价Facebook的Relay框架?Meteor.js 是什么?

发布和订阅无法正常工作

Facebook 应用程序请求 user_likes 的权限仅适用于某些用户

Meteor 帐户 - 自定义登录页面