Ionic 3 Firebase Google Auth停止在Android设备中工作

时间:2018-06-17 17:32:39

标签: android firebase ionic3 angularfire2 ionic-native

我的应用程序运行良好,直到我尝试实现通知,在Android设备上运行时得到firebase拒绝连接和404错误,但一切都在浏览器上完美运行。然后重新安装了每个插件和模块,解决了firebase连接问题,但Google原生登录方法根本无法正常工作,甚至没有抛出任何错误

signInWithGoogle() { 
    if (this.platform.is('cordova')) {
        this.nativeGoogleLogin();
    }else{
        this.webGoogleLogin().then(()=>{});
    }
}
async nativeGoogleLogin(): Promise<void>{
    try {
        this.loading.present();
        const gplusUser = await this.gplus.login({
            'webClientId':'******',
            'offline':true,
            'scopes':'profile email'
        }) 
        console.log('NativeLogin');
        return await this.afAuth.auth.signInWithCredential(
            firebase.auth.GoogleAuthProvider.credential(gplusUser.idToken))

        // return await this.afAuth.auth.signInAndRetrieveDataWithCredential(
        //     firebase.auth.GoogleAuthProvider.credential(gplusUser.idToken))
        .then(data =>{
            this.loading.dismiss();
            console.log(data);
            this.updateUserData(data.user);
        }).catch(err =>{
            this.loading.dismiss();
            console.log('NativeLoginError',err);
        })
    } catch (error) {
        this.loading.dismiss();
        console.error('NativeLoginError',error); 
    }
}

异步方法甚至没有控制台记录文本。

  

的console.log( 'NativeLogin');

我仔细检查了webClientId。我正在努力解决这个问题

1 个答案:

答案 0 :(得分:0)

您在安装Firebase通知时是否开始看到错误? FCM?我首先卸载它,看看问题是否仍然存在。有时插件具有冲突的依赖关系,并且彼此混淆。

您在运行应用程序时是否安装了FCM?根据我的经验,它会破坏热重载,它将不再知道应该在哪里正确定位,所以如果是这种情况,一个简单的停止和启动应该解决。

尝试运行ionic doctor check这将解决离子项目在CLI方面遇到的任何问题。

另外,稍微清理代码,以便更容易理解。

signInWithGoogle() { 
    if (this.platform.is('cordova')) {
        this.nativeGoogleLogin().then(data => {
    this.loading.dismiss();
    this.updateUserData(data.user);
}).catch(err => { console.log('Native login error: ', JSON.stringify(err); });
    } else {
        this.webGoogleLogin();
    }
}

nativeGoogleLogin(): Promise<void> { // Personally I would take this out of the try catch because you already are catching the error with the .catch of your promise.

this.loading.present();
const gplusUser = await this.gplus.login({
            'webClientId':'******',
            'offline':true,
            'scopes':'profile email'
        });
return await this.afAuth.auth.signInWithCredential(
            firebase.auth.GoogleAuthProvider.credential(gplusUser.idToken));
}

要检查的另一件事是看看你是否实际上正在调用signInWithGoogle()方法,因为这是我在第一次出发时经常犯的错误。

还尝试在任何地方输入console.log消息,我个人最喜欢的事情是以下内容,尤其是在开发时。

console.log('File-name.ts: What-Im-Attempting-to-do: status(error, success or JSON.stringify(data);');

通过这种方式,它可以更轻松地追踪您的错误,而不必记住每个错误应该分开的内容。

如果所有这些都不起作用,请尝试完全删除您的平台,然后重新添加它。

ionic cordova platform rm ios/android 
ionic cordova platform add ios/android

希望这有点帮助!