Firebase como vincular conta criada com phoneNumber
✅ Posso permitir que o usuário atualize seu perfil com o número do celular usando verifyPhoneNumber
e 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-use
erro.
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
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
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