Firebase cara menautkan akun yang dibuat dengan phoneNumber

Dec 07 2020

✅ Saya dapat mengizinkan pengguna memperbarui profil mereka dengan menggunakan verifyPhoneNumberdan memperbarui nomor ponselcurrentUser.updatePhoneNumber

❌ Masalah saya muncul ketika saya mengizinkan masuk melalui telepon, dan PENGGUNA BARU mencoba masuk dengan nomor telepon, sebuah akun dibuat secara otomatis.

Jika saya kemudian perlu mengaitkan nomor tersebut dengan akun email , metode di atas akan mengembalikan credential-already-in-usekesalahan.

Firebase merekomendasikan metode berikut dalam dokumentasinya .

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

firebase.auth().signInWithCredential(credential);

Jadi saya melakukan ini bersama-sama linkWithCredential, signInWithCredential mengembalikan hasil denganresult.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);

});

Karena result.credential = null, saya tidak dapat melanjutkan dengan LinkWithCredential.

Saya juga sudah mencoba linkWithPhoneNumber, tetapi mengembalikan ID validasi, yang masih tidak dapat saya gabungkan akun.

❓Bolehkah saya tahu bagaimana kalian menggabungkan akun phoneNumber dengan akun lain (Facebook / google / email)?

Jawaban

kunquan Dec 31 2020 at 13:05

Jika Anda ingin menautkan akun yang ada dengan nomor telepon yang dapat Anda gunakan linkWithPhoneNumber. Pada dasarnya Anda setelah pengguna masuk (katakanlah dengan Google), Anda mengambil info pengguna dan kemudian menautkan kredensial itu dengan nomor telepon. Saya menemukan jawaban detail yang mirip dengan tautan pertanyaan Anda di sini

IcyTv Dec 30 2020 at 04:29

Mungkin Sesuatu seperti

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

di mana Anda memiliki Pengguna yang telah masuk melalui nama pengguna / kata sandi, facebook google, dll ... akan berfungsi?

Karena Anda tidak mendapatkan ID verifikasi dari Phone Linking melainkan ConfirmationResult