Estoy usando el cliente expo para mi aplicación. Cuando envío el correo electrónico, la verificación falla inmediatamente. Cuando voy al correo electrónico y lo verifico, la verificación sigue sin funcionar. Esta es mi función:
firebase.auth().createUserWithEmailAndPassword(emailID, password) .then(async ({ user }) => { //console.log(this.state) await user.sendEmailVerification().then(async () => { user = await firebase.auth().currentUser; await user.reload(); user = await firebase.auth().currentUser; if (user.emailVerified) { db.collection("Users").add({ 'firstName': this.state.firstName, 'lastName': this.state.lastName, 'contact': this.state.contact, 'emailID': this.state.emailID, 'password': this.state.password, 'description': '', 'profilePicture': '' }) return alert('Account has been created. You can now login.'); } else { return alert('Failed to verify email!') } }) }) .catch((error) => { // Handle Errors here. var errorCode = error.code; var errorMessage = error.message; return alert(errorMessage); });¿Alguien puede darme una solución para esto? Gracias,
El código en su bloque interno then se ve bien, pero solo se ejecuta una vez: inmediatamente después de enviar el correo electrónico de verificación.
Cuando llama a sendEmailVerification que simplemente envía el correo electrónico. Solo una vez que haga clic en el enlace en ese correo electrónico, la dirección de correo electrónico en el perfil se configurará para verificar.
Por lo tanto, deberá volver a iniciar sesión o llamar a user.reload() , después de hacer clic en el enlace para obtener el perfil con el estado de verificación actualizado. Esto significa que normalmente ejecutará el código que tiene y then bloqueará:
Puede elegir uno de estos, pero también usar cualquier combinación de ellos para asegurarse de que el estado de verificación se detecte rápidamente en su aplicación.