2017-11-26 1 views
2

Ich habe mit diesem Problem für eine lange Zeit fest und ich habe beschlossen, mein Problem hier zu posten.Link mehrere Konten in Firebase

Mein Problem besteht darin, die Konten (Facebook und Google) in Firebase zusammenzuführen. Unabhängige Anmeldung mit einem von beiden funktioniert gut.

Zuerst wenn der Benutzer sich mit Google und später mit Facebook (das hat die gleiche E-Mail-Adresse mit Google) Anmeldung und Fehler. Ich habe es geschafft, den Fehler zu beheben, wie Sie in meinem Code unten sehen, aber ich weiß nicht, wie Sie beide Konten zusammenführen. Hier

ist, was ich bisher getan haben:

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) 
    }); 
  1. Zuerst habe ich bereits mit Google Angemeldete
  2. Jetzt möchte ich mit Facebook mit derselben E-Mail-Adresse anmelden ich die strom- bekommen Benutzer null offensichtlich, weil der Benutzer nicht angemeldet ist, ist dies der Fehler: error:TypeError: __WEBPACK_IMPORTED_MODULE_1_firebase___default.a.auth(...).currentUser is null.

Ich habe die Dokumentation über den Merge-Teil gelesen, konnte dies aber immer noch nicht herausfinden. https://firebase.google.com/docs/auth/web/account-linking#link-federated-auth-provider-credentials-to-a-user-account

Ich schätze die Hilfe wirklich.

Antwort

0

Nachdem Sie fetchProvidersForEmail und Abbildung der bestehenden Google-Nutzer aus, müssen Sie sich zuerst einloggen mit diesem Konto:

firebase.auth().signInWithPopup(new firebase.auth.GoogleAuthProvider().setCustomParameters({login_hint: error.email})... 

Danach schließt man dann:

firebase.auth().currentUser.linkWithCredential(error.credential) 

So ist der Benutzer zuerst muss vor dem Verknüpfen des Facebook-Kontos die Inhaberschaft des vorhandenen Kontos bestätigen.

Verwandte Themen