Firebase, wie man mit phoneNumber erstelltes Konto verknüpft

Dec 07 2020

✅ Ich kann Benutzer ihr Profil mit Handynummer aktualisieren verifyPhoneNumberund aktualisieren lassencurrentUser.updatePhoneNumber

❌ Mein Problem tritt auf, wenn ich die Anmeldung per Telefon zulasse und ein NEUER BENUTZER versucht, sich mit einer Telefonnummer anzumelden. Es wird automatisch ein Konto erstellt.

Wenn ich die Nummer dann einem E-Mail-Konto zuordnen muss , gibt die oben beschriebene Methode einen credential-already-in-useFehler zurück.

Firebase empfiehlt die folgende Methode in der Dokumentation .

var credential = firebase.auth.PhoneAuthProvider.credential(confirmationResult.verificationId, code);

firebase.auth().signInWithCredential(credential);

Also habe ich dies zusammen gemacht linkWithCredential, signInWithCredential gibt jedoch ein Ergebnis mit zurückresult.credential = null

// Sign in user with the account you want to link to
auth.signInWithCredential(credential).then(function(result) {
  console.log("Sign In Success", result);
  var currentUser = result.user;

  return prevUser.linkWithCredential(result.credential) //this line doesn't work.
    .then(function(linkResult) {

      return auth.signInWithCredential(linkResult.credential);
    })
}).catch(function(error) {

  console.log("Sign In Error", error);

});

Da result.credential = null ist, kann ich nicht mit LinkWithCredential fortfahren.

Ich habe es auch versucht linkWithPhoneNumber, aber es wird eine Validierungs-ID zurückgegeben, mit der ich das Konto immer noch nicht zusammenführen kann.

❓Kann ich wissen, wie ihr ein phoneNumber-Konto mit einem anderen Konto (Facebook / Google / E-Mail) zusammengeführt habt?

Antworten

kunquan Dec 31 2020 at 13:05

Wenn Sie ein vorhandenes Konto mit einer Telefonnummer verknüpfen möchten, können Sie diese verwenden linkWithPhoneNumber. Grundsätzlich rufen Sie nach der Anmeldung des Nutzers (z. B. bei Google) Benutzerinformationen ab und verknüpfen diesen Berechtigungsnachweis später mit der Telefonnummer. Ich fand ein Detail Antwort , die auf Ihre Frage ist ähnlich wie hier Link

IcyTv Dec 30 2020 at 04:29

Vielleicht so etwas wie

const confirmationResult = await firebase.auth().currentUser.linkWithPhoneNumber(phoneNumber, recaptcha);
//Prompt your user for the code they recieved via sms here
confirmationResult.confirm(code);

Wo haben Sie einen Benutzer, der sich über Benutzername / Passwort, Facebook Google usw. angemeldet hat? Würde das funktionieren?

Da Sie keine Bestätigungs-ID von Phone Linking erhalten, sondern ein Bestätigungsergebnis