usuario register recordar password functions contraseña auth firebase firebase-authentication

recordar - register user in firebase



El correo electrónico de confirmación de Firebase no se envía (4)

He configurado correctamente la autenticación de correo electrónico / contraseña de Firebase, pero por razones de seguridad quiero que el usuario confirme su correo electrónico. Dice en el sitio web de Firebases:

Cuando un usuario se registra con una dirección de correo electrónico y una contraseña, se envía un correo electrónico de confirmación para verificar su dirección de correo electrónico.

Pero cuando me registro, no recibo un correo electrónico de confirmación.

He buscado y solo puedo encontrar un código para enviar el correo electrónico de restablecimiento de contraseña, pero no un código para enviar el correo electrónico de confirmación.

He mirado aquí:

https://firebase.google.com/docs/auth/ios/manage-users#send_a_password_reset_email

Alguien tiene idea de cómo puedo hacerlo?


Después de crear un usuario, se devuelve un objeto Usuario, donde puede verificar si el correo electrónico del usuario ha sido verificado o no.

Cuando un usuario no ha sido verificado, puede activar el método sendEmailVerification en el propio objeto del usuario.

firebase.auth() .createUserWithEmailAndPassword(email, password) .then(function(user){ if(user && user.emailVerified === false){ user.sendEmailVerification().then(function(){ console.log("email verification sent to user"); }); } }).catch(function(error) { // Handle Errors here. var errorCode = error.code; var errorMessage = error.message; console.log(errorCode, errorMessage); });

También puede verificar escuchando AuthState, el problema con el siguiente método es que con cada nueva sesión (al actualizar la página), se envía un nuevo correo electrónico.

firebase.auth().onAuthStateChanged(function(user) { user.sendEmailVerification(); });


Noté que los nuevos documentos de autenticación de correo electrónico de Firebase no están debidamente documentados.

firebase.auth().onAuthStateChanged(function(user) { user.sendEmailVerification(); });

Tenga en cuenta que:

  1. Solo puede enviar la verificación por correo electrónico a los usuarios objeto que creó mediante el método de correo electrónico y contraseña createUserWithEmailAndPassword
  2. Solo después de que haya firmado usuarios en estado autenticado, Firebase le devolverá una promesa del objeto de autenticación.
  3. El antiguo método onAuth se ha cambiado a onAuthStateChanged .

Para verificar si el correo electrónico está verificado:

firebase.auth().onAuthStateChanged(function(user) { if (user.emailVerified) { console.log(''Email is verified''); } else { console.log(''Email is not verified''); } });


Puede enviar un correo electrónico de verificación y verificar si se verificó de la siguiente manera en AuthListener:

mAuthListener = new FirebaseAuth.AuthStateListener() { @Override public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) { FirebaseUser user = firebaseAuth.getCurrentUser(); if (user != null) { //---- HERE YOU CHECK IF EMAIL IS VERIFIED if (user.isEmailVerified()) { Toast.makeText(LoginActivity.this,"You are in =)",Toast.LENGTH_LONG).show(); } else { //---- HERE YOU SEND THE EMAIL user.sendEmailVerification(); Toast.makeText(LoginActivity.this,"Check your email first...",Toast.LENGTH_LONG).show(); } } else { // User is signed out Log.d(TAG, "onAuthStateChanged:signed_out"); } // [START_EXCLUDE] updateUI(user); // [END_EXCLUDE] } };


si está utilizando la compilación "com.google.firebase: firebase-auth: 9.2.0" y compila ''com.google.firebase: firebase-core: 9.2.0'', el método sendEmailVerification () no se resolverá hasta que actualice a 9.8.0 o superior. Perdí la mayor parte del tiempo antes de que lo descubriera.