Estoy tratando de crear un sistema de registro en el que solo puedas usar los correos electrónicos existentes. Estoy tratando de enviar un enlace de verificación de correo electrónico al correo electrónico una vez que han presionado un botón, y si se verifica, se crea el usuario. Esta es mi función:
userSignUp = (emailID,password,confirmPassword) => { if(password !== confirmPassword) { return alert("Password does not match. \n Check your password.") } else if(this.state.firstName !== '' && this.state.lastName !== '' && this.state.emailID !== '' && this.state.password !== ''){ alert('A mail has been sent to your email account. Verify it and you will be able to login.'); return firebase.auth().currentUser.sendEmailVerification() .then(() => { if(authUser.user.emailVerified){ //This will return true or false firebase.auth().createUserWithEmailAndPassword(emailID, password) .then(()=>{ //console.log(this.state) db.collection("Users").add({ 'firstName': this.state.firstName, 'lastName': this.state.lastName, 'contact': this.state.contact, 'emailID': this.state.emailID, 'password': this.state.password, 'points': 0, 'description': '' }) return alert('Account has been created. You can now login.'); }) .catch((error) => { // Handle Errors here. var errorCode = error.code; var errorMessage = error.message; return alert(errorMessage); }); } else { return alert('Verification failed. Failed to create account.') } }); } else if(this.state.firstName === ''){ return alert("Please enter your first name."); } else if(this.state.lastName === ''){ return alert("Please enter your last name."); } else if(this.state.emailID === ''){ return alert("Please enter your email address."); } else if(this.state.password === ''){ return alert("Please enter your password."); } }Por cierto, también recibo este error
TypeError: null no es un objeto (evaluando 'firebase.default.auth().currentUser.sendEmailVerification')
¿Hay alguna otra forma de verificar si el correo electrónico existe? Estoy en javascript usando el cliente expo. ¿Alguien puede ayudarme por favor? Gracias.
El usuario debe iniciar sesión para solicitar un correo electrónico de verificación. Parece que está intentando verificar el correo electrónico del usuario antes de iniciar sesión o incluso crear su cuenta en primer lugar, lo que no es posible en este momento. Entonces el flujo debe ser:
// 1. Create user account / log user in firebase.auth().createUserWithEmailAndPassword(emailID, password).then(async ({user}) => { // 2. Send verification email await user.sendEmailVerification() console.log("Verification email sent!") }) Puede usar la propiedad emailVerified en la aplicación para alertar al usuario si aún no ha verificado el correo electrónico y restringir su acceso mediante reglas de seguridad. También echa un vistazo:
Firebase Authentication: verifica el correo electrónico antes de registrarte
Verificación de correo electrónico de Firebase al registrarse