MultiFactorResolver interface

La clase utilizada para facilitar la recuperación de MultiFactorError cuando un usuario necesita proporcionar un segundo factor para iniciar sesión.

Firma:

export interface MultiFactorResolver 

Propiedades

Propiedad Escribe Descripción
consejos MultiFactorInfo [] La lista de sugerencias para los segundos factores necesarios para completar el inicio de sesión para la sesión actual.
sesión MultiFactorSession El identificador de sesión para el flujo de inicio de sesión actual, que se puede usar para completar el inicio de sesión del segundo factor.

Métodos

Método Descripción
resolverSignIn(afirmación) Una función de ayuda para ayudar a los usuarios a completar el inicio de sesión con un segundo factor usando una MultiFactorAssertion que confirma que el usuario completó con éxito el desafío del segundo factor.

MultiFactorResolver.hints

La lista de sugerencias para los segundos factores necesarios para completar el inicio de sesión para la sesión actual.

Firma:

readonly hints: MultiFactorInfo[];

MultiFactorResolver.sesión

El identificador de sesión para el flujo de inicio de sesión actual, que se puede usar para completar el inicio de sesión del segundo factor.

Firma:

readonly session: MultiFactorSession;

MultiFactorResolver.resolveSignIn()

Una función de ayuda para ayudar a los usuarios a completar el inicio de sesión con un segundo factor usando una MultiFactorAssertion que confirma que el usuario completó con éxito el desafío del segundo factor.

Firma:

resolveSignIn(assertion: MultiFactorAssertion): Promise<UserCredential>;

Parámetros

Parámetro Escribe Descripción
afirmación MultiFactorAserción La aserción de múltiples factores para resolver el inicio de sesión.

Devoluciones:

Promesa < Credencial de usuario >

La promesa que se resuelve con el objeto de credencial de usuario.

Ejemplo

const phoneAuthCredential = PhoneAuthProvider.credential(verificationId, verificationCode);
const multiFactorAssertion = PhoneMultiFactorGenerator.assertion(phoneAuthCredential);
const userCredential = await resolver.resolveSignIn(multiFactorAssertion);

Ejemplo

let resolver;
let multiFactorHints;

signInWithEmailAndPassword(auth, email, password)
    .then((result) => {
      // User signed in. No 2nd factor challenge is needed.
    })
    .catch((error) => {
      if (error.code == 'auth/multi-factor-auth-required') {
        resolver = getMultiFactorResolver(auth, error);
        // Show UI to let user select second factor.
        multiFactorHints = resolver.hints;
      } else {
        // Handle other errors.
      }
    });

// The enrolled second factors that can be used to complete
// sign-in are returned in the `MultiFactorResolver.hints` list.
// UI needs to be presented to allow the user to select a second factor
// from that list.

const selectedHint = // ; selected from multiFactorHints
const phoneAuthProvider = new PhoneAuthProvider(auth);
const phoneInfoOptions = {
  multiFactorHint: selectedHint,
  session: resolver.session
};
const verificationId = phoneAuthProvider.verifyPhoneNumber(phoneInfoOptions, appVerifier);
// Store `verificationId` and show UI to let user enter verification code.

// UI to enter verification code and continue.
// Continue button click handler
const phoneAuthCredential = PhoneAuthProvider.credential(verificationId, verificationCode);
const multiFactorAssertion = PhoneMultiFactorGenerator.assertion(phoneAuthCredential);
const userCredential = await resolver.resolveSignIn(multiFactorAssertion);