android firebase firebase-authentication email-verification

Verificación de correo electrónico usando Firebase 3.0 en Android



firebase-authentication email-verification (4)

Actualizar

La verificación por correo electrónico está disponible en la versión 9.6 y superior de Firebase SDK para Android .

Respuesta original

La verificación de correo electrónico aún no está disponible para Android. También respondí here con más contexto.

Sabía que podemos verificar el correo electrónico de los usuarios con Firebase Auth 3.0. No puedo encontrar ninguna documentación sobre la verificación de correo electrónico en Android. Puedo encontrar lo mismo para iOS y para la web, pero no para Android. Cualquier enlace a la documentación sería útil.

A partir de la imagen, está claro que una vez que el usuario inicia sesión, se lo informará por correo electrónico para confirmar su suscripción. Me suscribí y también verifiqué en la sección de usuarios en la pestaña Autenticación y puedo ver mi identificación de correo y la identificación de usuario única generada por Firebase. Lo que falta aquí es el correo electrónico de confirmación a mi identificación de correo electrónico. ¿Alguien intentó esto o estoy demasiado pronto intentando esto? Gracias por tu ayuda.


Dado que la verificación por correo electrónico solo funciona con la Email/Password authentication , el mejor lugar para enviarla será en el método onComplete método createUserWithEmailAndPassword(...) , después de que el registro sea exitoso.

firebaseAuth.createUserWithEmailAndPassword(email, password) .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() { @Override public void onComplete(@NonNull Task<AuthResult> task) { if (task.isSuccessful()) { sendVerificationEmail(); ....

El método de sendVerification personalizado es:

public void sendVerificationEmail() { FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser(); if (user != null) { user.sendEmailVerification() .addOnCompleteListener(new OnCompleteListener<Void>() { @Override public void onComplete(@NonNull Task<Void> task) { if (task.isSuccessful()) { Toast.makeText(SignUpActivity.this, "Signup successful. Verification email sent", Toast.LENGTH_SHORT).show(); } } }); } }

Luego puede verificar si el usuario ha verificado su correo electrónico en cualquier lugar de su aplicación llamando a:

mAuthListener = new FirebaseAuth.AuthStateListener() { @Override public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) { firebaseUser = firebaseAuth.getCurrentUser(); if (firebaseUser != null ) { Log.e(TAG, firebaseUser.isEmailVerified() ? "User is signed in and email is verified" : "Email is not verified"); } else { Log.e(TAG, "onAuthStateChanged:signed_out"); } } };



Una alternativa sugerida por el equipo de Firebase.

Una cosa que podría hacer es agregar un nodo a su base de datos de Firebase que contenga todas las direcciones de correo electrónico como elementos secundarios. Debe hacer que este nodo solo sea legible públicamente (a través de las reglas de seguridad de Firebase).

Luego, desde sus aplicaciones, una vez que un usuario se registra / inicia sesión, verifica si el correo electrónico de ese usuario está en la lista, y si no, lo cierra y lo expulsa de su aplicación (y como beneficio adicional, usted incluso podría registrar la dirección de correo electrónico del intruso en su base de datos, para que luego pueda verificar quién está intentando acceder a su aplicación).

Esto funcionará para la prueba inicial si conoce los identificadores de correo electrónico de las personas que probarán su aplicación hasta que la verificación de correo electrónico llegue a Android.