我正在使用Ionic和AngularFire2对Firebase进行身份验证。我允许用户通过GooglePlus提供商登录并在Firebase上创建帐户。然后,如果用户退出,并尝试使用浏览器使用具有相同电子邮件地址的Facebook帐户登录,则会收到以下消息:
loginFacebookBrowser(): Promise<FirebaseAuthState> {
return new Promise<FirebaseAuthState>((resolve) => {
this.af.auth.login({ provider: AuthProviders.Facebook, method: AuthMethods.Popup }).then((success: FirebaseAuthState) => {
resolve(success);
}).catch((error) => {
this.loading.dismiss();
console.error('loginFacebook', error);
this.doAlert('loginFacebook: ' + error.message);
});
});
}
tg {code:&#34; auth / account-exists-with-different-credential&#34;,message: &#34;已存在与提供商使用相同电子邮件地址的帐户 与此电子邮件地址相关联。&#34;,电子邮件:&#34; xxxxxxxx@gmail.com", 凭证:Uf,__ zone_symbol__currentTask:t}
如果我使用AngularFire cordova插件并尝试在 Android设备上登录,它只会挂起而没有错误消息。
loginFacebookCordova(): Promise<FirebaseAuthState> {
return new Promise<FirebaseAuthState>((resolve) => {
Facebook.login(['public_profile', 'email']).then(facebookData => {
let cred: firebase.auth.AuthCredential = firebase.auth.FacebookAuthProvider.credential(facebookData.authResponse.accessToken);
firebase.auth().signInWithCredential(cred).then((data: FirebaseAuthState) => {
resolve(data);
});
}, error => {
this.loading.dismiss();
console.error('loginFacebook: ' + error);
this.doAlert('loginFacebook: ' + error.message);
});
});
}
问题
如何让Cordova插件具有与浏览器相同的行为,并向用户显示有意义的消息?或者,如果无法做到这一点,是否可以检查帐户(电子邮件地址)是否已存在于不同的提供商处?
的package.json
"angularfire2": "^2.0.0-beta.8",
"firebase": "^3.7.5",