MultiFactorResolver interface

La classe utilizzata per facilitare il ripristino da MultiFactorError quando un utente deve fornire un secondo fattore per accedere.

Firma:

export interface MultiFactorResolver 

Proprietà

Proprietà Tipo Descrizione
suggerimenti MultiFactorInfo [] L'elenco dei suggerimenti per i secondi fattori necessari per completare l'accesso per la sessione corrente.
sessione Sessione MultiFactor L'identificatore di sessione per il flusso di accesso corrente, che può essere utilizzato per completare l'accesso del secondo fattore.

Metodi

Metodo Descrizione
risolvereSignIn(asserzione) Una funzione di supporto per aiutare gli utenti a completare l'accesso con un secondo fattore utilizzando un'asserzione MultiFactor che conferma che l'utente ha completato con successo la sfida del secondo fattore.

MultiFactorResolver.hints

L'elenco dei suggerimenti per i secondi fattori necessari per completare l'accesso per la sessione corrente.

Firma:

readonly hints: MultiFactorInfo[];

MultiFactorResolver.session

L'identificatore di sessione per il flusso di accesso corrente, che può essere utilizzato per completare l'accesso del secondo fattore.

Firma:

readonly session: MultiFactorSession;

MultiFactorResolver.resolveSignIn()

Una funzione di supporto per aiutare gli utenti a completare l'accesso con un secondo fattore utilizzando un'asserzione MultiFactor che conferma che l'utente ha completato con successo la sfida del secondo fattore.

Firma:

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

Parametri

Parametro Tipo Descrizione
asserzione Asserzione multifattoriale L'asserzione a più fattori con cui risolvere l'accesso.

Ritorna:

Promessa < Credenziali utente >

La promessa che si risolve con l'oggetto credenziale dell'utente.

Esempio

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

Esempio

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);