私は長い間この問題に悩まされており、私はここに私の問題を掲載することに決めました。Firebaseの複数のアカウントをリンクする
私の問題は、Firebaseのアカウント(FacebookとGoogle)をマージすることです。彼らのどちらかで独立してサインアップするとうまく動作します。
最初にユーザーがGoogleでサインアップし、後でFacebook(Googleと同じ電子メールアドレスを持つ)でそれがスローされ、エラーが発生したとき。私はあなたが私のコードで下記のようにエラーを処理することができたが、私は両方のアカウントをマージする方法を知らない。ここで
は私がこれまでにやっていることです:
facebookSignin: function() {
var self = this
firebase.auth().signInWithPopup(facebookProvider).then(function(result) {
var token = result.credential.accessToken;
var user = result.user;
self.registerProfile()
}).catch(function(error) {
var errorCode = error.code;
var errorMessage = error.message;
console.log("ERROR:" + error)
console.log("email is : " + error.email)
if (errorCode == 'auth/account-exists-with-different-credential') {
firebase.auth().fetchProvidersForEmail(error.email).then(providers => {
//providers returns this array -> ["google.com"]
console.log("Providers:" + providers)
console.log("Credential: " + JSON.stringify(error.credential))
firebase.auth().currentUser.link(error.credential).then(function(user) {
console.log("Account linking success", user);
});
}).catch(function(error){
console.log("error:" + error)
})
}
console.log("error code:" + error.code+ "error msg:" + error.message)
});
- まず、私は既にGoogle
- サインアップし、今私は、私は電流を取得し、同じメールアドレス とFacebookでログインしたいですユーザーがログインしていないため明らかにユーザーnullです。これはエラーです:
error:TypeError: __WEBPACK_IMPORTED_MODULE_1_firebase___default.a.auth(...).currentUser is null
。
私はマージ部分についてのドキュメントを読んだが、まだこれを理解できなかった。 https://firebase.google.com/docs/auth/web/account-linking#link-federated-auth-provider-credentials-to-a-user-account
私は本当に助けに感謝します。あなたfetchProvidersForEmail
と既存のGoogleユーザーを把握した後、あなたはその既存のアカウントに最初にログインする必要があります