Firebase comment associer un compte créé avec phoneNumber

Dec 07 2020

✅ Je peux laisser l'utilisateur mettre à jour son profil avec son numéro de mobile en utilisant verifyPhoneNumberet mettre à jourcurrentUser.updatePhoneNumber

❌ Mon problème survient lorsque j'autorise la connexion par téléphone et qu'un NOUVEL UTILISATEUR tente de se connecter avec un numéro de téléphone, un compte est automatiquement créé.

Si je dois ensuite associer le numéro à un compte de messagerie , la méthode ci-dessus renverra une credential-already-in-useerreur.

Firebase recommande la méthode suivante dans sa documentation .

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

firebase.auth().signInWithCredential(credential);

J'ai donc fait cela ensemble linkWithCredential, signInWithCredential renvoie un résultat avecresult.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);

});

Depuis result.credential = null, je ne peux pas continuer avec LinkWithCredential.

J'ai également essayé linkWithPhoneNumber, mais cela renvoie un ID de validation, que je ne peux toujours pas fusionner le compte.

❓ Puis-je savoir comment vous avez fusionné un compte phoneNumber avec un autre compte (Facebook / google / email)?

Réponses

kunquan Dec 31 2020 at 13:05

Si vous souhaitez associer un compte existant à un numéro de téléphone, vous pouvez utiliser linkWithPhoneNumber. Fondamentalement, après la connexion de l'utilisateur (par exemple avec Google), vous récupérez les informations de l'utilisateur, puis associez plus tard ces informations d'identification au numéro de téléphone. J'ai trouvé une réponse détaillée similaire à votre lien de question ici

IcyTv Dec 30 2020 at 04:29

Peut-être quelque chose comme

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

où vous avez un utilisateur qui s'est connecté via nom d'utilisateur / mot de passe, facebook google, etc ... fonctionnerait-il?

Puisque vous n'obtenez pas un ID de vérification de Phone Linking mais plutôt un ConfirmationResult