Firebase, jak połączyć konto utworzone za pomocą phoneNumber

Dec 07 2020

✅ Jestem w stanie pozwolić użytkownikowi zaktualizować swój profil za pomocą numeru telefonu komórkowego za pomocą verifyPhoneNumberi aktualizacjicurrentUser.updatePhoneNumber

❌ Mój problem pojawia się, gdy zezwalam na logowanie telefoniczne, a NOWY UŻYTKOWNIK próbuje zalogować się za pomocą numeru telefonu, konto jest tworzone automatycznie.

Jeśli następnie będę musiał powiązać numer z kontem e-mail , powyższa metoda zwróci credential-already-in-usebłąd.

Firebase zaleca w swojej dokumentacji następującą metodę .

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

firebase.auth().signInWithCredential(credential);

Zrobiłem to linkWithCredentialjednak razem, jednak signInWithCredential zwraca wynik zresult.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);

});

Ponieważ result.credential = null, nie mogę kontynuować z LinkWithCredential.

Próbowałem też linkWithPhoneNumber, ale zwraca identyfikator walidacji, którego nadal nie mogę połączyć konta.

❓ Czy mogę wiedzieć, jak połączyliście konto phoneNumber z innym kontem (Facebook / google / e-mail)?

Odpowiedzi

kunquan Dec 31 2020 at 13:05

Jeśli chcesz połączyć istniejące konto z numerem telefonu, możesz użyć linkWithPhoneNumber. Zasadniczo po zalogowaniu się użytkownika (powiedzmy w Google) pobierasz informacje o użytkowniku, a następnie łączysz te dane uwierzytelniające z numerem telefonu. Znalazłem tutaj szczegółową odpowiedź podobną do linku do pytania

IcyTv Dec 30 2020 at 04:29

Może coś takiego

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

gdzie masz użytkownika, który zalogował się za pomocą nazwy użytkownika / hasła, facebook google itp ... działałby?

Ponieważ nie otrzymujesz identyfikatora weryfikacyjnego z łączenia telefonu, ale raczej ConfirmationResult