Firebase cara menautkan akun yang dibuat dengan phoneNumber
✅ Saya dapat mengizinkan pengguna memperbarui profil mereka dengan menggunakan verifyPhoneNumber
dan 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-use
kesalahan.
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
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
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