我的应用程序运行良好,直到我尝试实现通知,在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。我正在努力解决这个问题
答案 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
希望这有点帮助!