Meteor 1.3+ 帐户 Facebook 登录 iOS 不工作

Posted

技术标签:

【中文标题】Meteor 1.3+ 帐户 Facebook 登录 iOS 不工作【英文标题】:Meteor 1.3+ Accounts Facebook Login for iOS not working 【发布时间】:2017-02-17 14:32:51 【问题描述】:

我一直在尝试找到一个解决方案(可悲的是,现在已经 3 个月了)在 ios 上使用 Meteors Accounts Facebook 登录 Facebook。我已经尝试了几乎所有谷歌搜索会出现的东西,在 Meteor 论坛上联系过,甚至打开了一个 Github 问题。

但是这个问题仍然让我无法理解。在台式机上一切正常,但我在移动设备上测试后立即收到 Facebook 错误 “未登录。您尚未登录。请登录并重试”

我发现了其他几个与此问题有关的问题,并且对完整证明答案的投入很少。在这一点上,我开始变得绝望。

在 Meteor 升级到 1.3 之前,这不是问题。

【问题讨论】:

听起来这是一个真正的问题,因为您发现其他人也有这个问题。如果您有足够的信心,您可以查看 Accounts 包源代码并尝试解决问题,或者您可以使用您的证据(和示例 repo)提出 Meteor 问题。听起来这是一个需要解决的问题 绝对是,或者根本没有我们能理解的解决方案。它总共困扰了我大约 6 个月。 嗯,如果能提示别人看,我觉得值得 大约三个月前我在 mdg GitHub 上留下了一个问题,然后一个月前碰到了它。也被别人撞了。 github.com/meteor/accounts/issues/9 【参考方案1】:

以下设置对我有用

    最新版本的 Meteor 和 Xcode

    帐户相关的 Meteor 包

    accounts-base
    accounts-password
    accounts-facebook
    accounts-google
    useraccounts:materialize 
    service-configuration
    accounts-ui
    splendido:accounts-meld
    

    渲染模板

    > atForm
    

    我还添加了 2 个 cordova 插件(为此在 .meteor 文件夹中创建一个文件,名称为 cordova-plugins 和以下内容

    cordova-plugin-meteor-webapp@https://github.com/meteor/cordova-plugin-meteor-webapp.git#8bf95eed3f313299fc2de33658866278eea2cdc5
    cordova-plugin-inappbrowser@https://github.com/apache/cordova-plugin-inappbrowser.git#2df0e72c36f1fda35c04b3b06bd7beaafaae6ee9
    

    还要确保在 html 的 head 标签中有以下行

    <meta http-equiv="Content-Security-Policy" content="default-src * 'unsafe-inline' 'unsafe-eval' data: " />
    

    最后在您的mobile-config.js 文件中添加以下行

    App.accessRule('http://*', type: 'navigation');
    App.accessRule('https://*', type: 'navigation');
    

还要在构建之前运行meteor reset 命令

【讨论】:

今晚我会试试你的过程。我很好奇为什么在这种情况下需要“流星重置”?我需要在每次构建之前都这样做吗? 也只是好奇在 Facebook 开发者部分,您是否进行了标准网站平台构建? 我还有一个问题。对于 cordova-plugins 文件,我应该使用什么文件扩展名? 有时更改的代码不会反映在cordova构建(ios和android)中,在这种情况下meteor reset可以解决问题。 对于创建 facebook 应用程序,我按照帐户 ui(facebook 配置按钮)显示的说明进行操作【参考方案2】:

这可能是GitHub issues中的问题

根据author- 看来,iOS 10 中的 WKWebView 不再将 Meteor Cordova CSP (default-src *) 应用于 websockets,并阻止连接,并显示以下消息。当用户更新到 iOS 10 时,这会破坏建立 websocket 连接的生产应用程序 (可能只有与 Meteor 服务器的默认连接以外的连接?不确定) (已发布)。

问题在于代码行

<meta http-equiv="Content-Security-Policy" content="default-src * data: blob: 'unsafe-inline' 'unsafe-eval';">

你可以尝试替换成

<meta http-equiv="Content-Security-Policy" content="default-src * 'self' data: blob: 'unsafe-inline' 'unsafe-eval' wss://*.ourdomain.tld ">

在文件https://github.com/meteor/meteor/blob/master/packages/boilerplate-generator/boilerplate_web.cordova.html

然后运行 ​​meteor update boilerplate-generator 更新 Meteor 1.4

您也可以尝试更新meteor update --release 1.4.2-beta.4,如链接中所述

此包在构建过程中运行,在项目级别更新此包不会更改用于构建应用程序的文件。

如果它仍然不起作用,那么按照author的建议

你可以添加一个简单的插件meteor add cordova:meteor-ios10-csp-fix@0.1.0

repo 是here,npm 页面是here

希望这会有所帮助。

全部归属于 github 链接和上述作者

【讨论】:

您好,感谢您的回复。也许我没听懂,对吧。但这似乎没有做到。 您是否也尝试过测试版和meteor-ios10-csp-fix@0.1.0 插件?【参考方案3】:

为了使这项工作适合我,我升级到了最新版本的流星、帐户-facebook 等。

接下来,我部署了一个 Web 版本的应用程序,并使用有效的 facebook 登录。然后我测试了网络应用 facebook 登录。将有效的 oauth 重定向 URI 添加到您的 facebook 应用程序设置中后,一切都会好起来。这些应该类似于https://example.com

然后我跑到终端meteor run ios-device --settings settings.json --mobile-server https://example.com

我的 mobile-config.js 文件也包含在 @Afzal Hossain 的推荐中 App.accessRule('http://*', type: 'navigation'); App.accessRule('https://*', type: 'navigation');

我设备上的应用可以登录。

不再需要 cordova 插件或 CSP 策略,因为流星更新使这些变得不必要了。

【讨论】:

所以请确保我的流程正确无误。您必须先部署到实时服务器吗?对于 --mobile-server,您是声明了连接还是在 settings.json 中建立了连接? 正确,为了测试,我在 linode 上部署了该站点的暂存版本。我不需要在 settings.json 中做任何我不会在常规部署中做的特殊操作。【参考方案4】:

我已通过在 Facebook 应用的“有效 OAuth 重定向 URI”中指定正确的 Url 解决了同样的问题。

之前,我已经指定 http://&lt;domainname&gt;/_oauth/facebook?close

这不起作用。经过一番调试,我发现网址应该是

http://&lt;domainname&gt;:&lt;port&gt;/_oauth/facebook?close(带端口号)

所以如果一个服务器在http://localhost:3000 上运行,它将是http://&lt;device ip/external ip&gt;:3000/_oauth/facebook?close

而且,如果您使用 --server=http://www.domainname.com 运行应用程序,那么它将是 http://www.domainname:80/_oauth/facebook?close(HTTP 的端口 80)

现在,我看到 Facebook 应用登录页面并且可以登录了。

但现在我在身份验证后关闭 InAppBrowser。在这方面的任何帮助都会很棒!

【讨论】:

以上是关于Meteor 1.3+ 帐户 Facebook 登录 iOS 不工作的主要内容,如果未能解决你的问题,请参考以下文章

使用社交媒体帐户(即 Facebook)注册/登录到 magnolia cms

如何在 react native 和 facebook sdk 中管理用户帐户状态?

Meteor Accounts-UI-Bootstrap - 弹出窗口不关闭

发布和订阅无法正常工作

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

Meteor 帐户 - 自定义登录页面