Firebase cómo vincular la cuenta creada con phoneNumber

Dec 07 2020

✅ Puedo permitir que el usuario actualice su perfil con un número de teléfono móvil usando verifyPhoneNumbery actualicecurrentUser.updatePhoneNumber

❌ Mi problema surge cuando permito el inicio de sesión por teléfono y un NUEVO USUARIO intenta iniciar sesión con un número de teléfono, se crea una cuenta automáticamente.

Si luego necesito asociar el número con una cuenta de correo electrónico , el método anterior devolverá un credential-already-in-useerror.

Firebase recomienda el siguiente método en su documentación .

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

firebase.auth().signInWithCredential(credential);

Así que hice esto juntos linkWithCredential, sin embargo, signInWithCredential devuelve un resultado conresult.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);

});

Dado que result.credential = null, no puedo continuar con LinkWithCredential.

También lo intenté linkWithPhoneNumber, pero devuelve una identificación de validación, que todavía no puedo fusionar la cuenta.

❓ ¿Puedo saber cómo fusionaron una cuenta phoneNumber con otra cuenta (Facebook / google / email)?

Respuestas

kunquan Dec 31 2020 at 13:05

Si desea vincular una cuenta existente con un número de teléfono, puede usar linkWithPhoneNumber. Básicamente, después de que el usuario inicie sesión (digamos con Google), recupera la información del usuario y luego vincula esa credencial con el número de teléfono. Encontré una respuesta detallada que es similar al enlace de su pregunta aquí

IcyTv Dec 30 2020 at 04:29

Tal vez algo como

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

donde tiene un usuario que ha iniciado sesión a través de nombre de usuario / contraseña, facebook google, etc ... ¿funcionaría?

Dado que no obtiene una identificación de verificación de Phone Linking, sino un resultado de confirmación