Firebase como vincular conta criada com phoneNumber

Dec 07 2020

✅ Posso permitir que o usuário atualize seu perfil com o número do celular usando verifyPhoneNumbere atualizecurrentUser.updatePhoneNumber

❌ Meu problema surge quando eu permito o login por telefone e um NOVO USUÁRIO tenta entrar com um número de telefone, uma conta é criada automaticamente.

Se eu precisar associar o número a uma conta de e-mail , o método acima retornará um credential-already-in-useerro.

O Firebase recomenda o método a seguir em sua documentação .

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

firebase.auth().signInWithCredential(credential);

Então eu fiz isso junto linkWithCredential, entretanto, signInWithCredential retorna um resultado comresult.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);

});

Como result.credential = null, não consigo prosseguir com LinkWithCredential.

Eu também tentei linkWithPhoneNumber, mas ele retorna um ID de validação, que ainda não consigo mesclar a conta.

❓Posso saber como vocês mesclaram uma conta phoneNumber com outra conta (Facebook / google / e-mail)?

Respostas

kunquan Dec 31 2020 at 13:05

Se quiser vincular uma conta existente a um número de telefone, você pode usar linkWithPhoneNumber. Basicamente, após o login do usuário (digamos com o Google), você recupera as informações do usuário e, posteriormente, vincula essa credencial ao número de telefone. Encontrei uma resposta detalhada que é semelhante ao link da sua pergunta aqui

IcyTv Dec 30 2020 at 04:29

Talvez 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);

onde você tem um usuário que se logou via nome de usuário / senha, facebook google, etc ... funcionaria?

Uma vez que você não obtém um ID de verificação do Phone Linking, mas sim um ConfirmationResult