离子2应用中的firebase auth网络错误



我的firebase/ionic 2应用程序在浏览器(离子服务)和局部Android设备(Ionic Run Android)中完美工作。该应用使用Firebase数据库和auth功能。

该应用在iOS设备上也可以完美地工作。

但是,当我在Android上发布到Google Play进行Beta测试时,Auth Login方法总是会出错:"网络错误(例如超时,中断连接或无法实现的主机)发生了。"但是Firebase数据库方法工作正常。我只使用firebase电子邮件/密码提供商。

我已经阅读了我可以找到与此问题相似的每篇文章,并尝试了所有这些解决方案。我已经升级到了所有组件的最新版本。

安装了Cordova-Plugin-Whitelist插件。它默认是在一个新的离子2项目中安装的。我的理解是以下安全设置没有阻止firebase。

index.html

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

config.xml

<access origin="*"/>
<allow-intent href="http://*/*"/>
<allow-intent href="https://*/*"/>
<allow-navigation href="*"/>

我的服务

public login(email: string, password: string): Observable<any> {
    return Observable.fromPromise(
        <Promise<any>>firebase.auth().signInWithEmailAndPassword(email, password)
    );
}

我的表格

this.authService.login(this.loginForm.value.email, this.loginForm.value.password)
        .subscribe(() => {
            // Do something!
        }, error => {
            // A network error has occurred!
        });

版本信息

Cordova CLI: 6.5.0
Ionic Framework Version: 2.2.0
Ionic CLI Version: 2.2.1
Ionic App Lib Version: 2.2.0
Ionic App Scripts Version: 1.1.4
Node Version: v7.2.1
In package.json: "firebase": "^3.7.1"
In config.xml: <plugin name="cordova-plugin-whitelist" spec="1.3.1"/>

我能够通过本地构建并指定下面的安全配置来解决此问题。

请注意,我找不到合适的配置。我怀疑我错过了白名单中的一个领域。

我一直在使用ionic.io生成.APK,由于某些原因,它产生了有问题的构建。奇怪的是,除了firebase身份验证外,一切都起作用。

index.html

<meta http-equiv="Content-Security-Policy" content="default-src * data: gap://ready https://ssl.gstatic.com file://* ws://* wss://*; img-src * data:; font-src * data:; script-src * https://*.google-analytics.com https://*.googleapis.com https://*.firebaseio.com 'unsafe-eval' 'unsafe-inline';">

请注意使用default-src *script-src *。将其中的任何一个更改为"自我"会导致错误。

config.xml

  <access origin="*"/>
  <access origin="https://*.google-analytics.com"/>
  <access origin="https://*.googleapis.com"/>
  <access origin="https://*.firebaseio.com"/>
  <allow-navigation href="*"/>
  <allow-navigation href="http://ionic.local/*"/>
  <allow-intent href="http://*/*"/>
  <allow-intent href="https://*/*"/>
  <allow-intent href="tel:*"/>
  <allow-intent href="sms:*"/>
  <allow-intent href="mailto:*"/>
  <allow-intent href="geo:*"/>

请注意使用<access origin="*"/>。删除此行会导致错误。

有趣的是,删除<access origin="*"/>线并在本地构建与使用Ionic.io构建时相同的错误。

相关内容

  • 没有找到相关文章

最新更新