Trabajar con usuarios que utilicen la autenticación multifactor

En este documento se explica cómo realizar tareas habituales con usuarios de Identity Platform que han habilitado la autenticación multifactor.

Actualizar el correo de un usuario

Los usuarios de la autenticación multifactor siempre deben tener una dirección de correo verificada. De esta forma, se evita que agentes maliciosos se registren en tu aplicación con un correo que no les pertenece y, después, impidan el acceso al propietario real añadiendo un segundo factor.

Para actualizar el correo de un usuario, usa el método verifyBeforeUpdateEmail(). A diferencia de updateEmail(), este método requiere que el usuario siga un enlace de verificación antes de que Identity Platform actualice su dirección de correo electrónico. Por ejemplo:

Versión web 8

var user = firebase.auth().currentUser;
user.verifyBeforeUpdateEmail(newEmail).then(function() {
  // Email sent.
  // User must click the email link before the email is updated.
}).catch(function(error) {
  // An error happened.
});

Versión web 9

import { getAuth, verifyBeforeUpdateEmail } from "firebase/auth";

const auth = getAuth(firebaseApp);
verifyBeforeUpdateEmail(auth.currentUser, newEmail).then(() => {
  // Email sent.
  // User must click the email link before the email is updated.
}).catch((error) => {
  // An error happened.
});

iOS

let user = Auth.auth().currentUser
user.verifyBeforeUpdateEmail(newEmail, completion: { (error) in
  if error != nil {
    // An error happened.
  }
  // Email sent.
  // User must click the email link before the email is updated.
})

Android

FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
user.verifyBeforeUpdateEmail(newEmail)
   .addOnCompleteListener(
      new OnCompleteListener<Void>() {
       @Override
       public void onComplete(@NonNull Task<Void> task) {
         if (task.isSuccessful()) {
          // Email sent.
          // User must click the email link before the email is updated.
         } else {
          // An error occurred.
         }
       }
      });

De forma predeterminada, Identity Platform envía un correo al usuario y proporciona un controlador sencillo basado en la Web para procesar la verificación. Hay varias formas de personalizar este flujo.

Localizar los correos de verificación

Para localizar los correos que envía Identity Platform, define el código de idioma antes de llamar a verifyBeforeUpdateEmail():

Versión web 8

firebase.auth().languageCode = 'fr';

Versión web 9

import { getAuth } from "firebase/auth";

const auth = getAuth();
auth.languageCode = 'fr';

iOS

Auth.auth().languageCode = 'fr';

Android

FirebaseAuth.getInstance().setLanguageCode("fr");

Transferir estados adicionales

Puedes usar los ajustes de código de acción para incluir un estado adicional en el correo de verificación o gestionar la verificación desde una aplicación móvil. Por ejemplo:

Versión web 8