> ## Documentation Index
> Fetch the complete documentation index at: https://auth0.generaltranslation.app/llms.txt
> Use this file to discover all available pages before exploring further.

# MfaWebAuthnRoamingChallenge

```ts Example theme={null}
import MfaWebAuthnRoamingChallenge from "@auth0/auth0-acul-js/mfa-webauthn-roaming-challenge";

const mfaWebAuthnRoamingChallengeManager = new MfaWebAuthnRoamingChallenge();
```

<div id="constructors">
  ## Constructeurs
</div>

<ParamField body="MfaWebAuthnRoamingChallenge" type="Constructor">
  Initialise une nouvelle instance de la classe `MfaWebAuthnRoamingChallenge`.

  <div id="throws">
    #### Exceptions
  </div>

  Se produit si le contexte Universal Login n’est pas disponible ou si le nom de l’écran
  dans le contexte ne correspond pas à `MfaWebAuthnRoamingChallenge.screenIdentifier`.
</ParamField>

<div id="properties">
  ## Propriétés
</div>

<ParamField body="branding" type={<span><a href="/docs/libraries/acul/js-sdk/Screens/interfaces/BrandingMembers">BrandingMembers</a></span>} />

<ParamField body="client" type={<span><a href="/docs/libraries/acul/js-sdk/Screens/interfaces/ClientMembers">ClientMembers</a></span>} />

<ParamField body="organization" type={<span><a href="/docs/libraries/acul/js-sdk/Screens/interfaces/OrganizationMembers">OrganizationMembers</a></span>} />

<ParamField body="prompt" type={<span><a href="/docs/libraries/acul/js-sdk/Screens/interfaces/PromptMembers">PromptMembers</a></span>} />

<ParamField body="screen" type={<span><a href="/docs/libraries/acul/js-sdk/Screens/interfaces/ScreenMembersOnMfaWebAuthnRoamingChallenge">ScreenMembersOnMfaWebAuthnRoamingChallenge</a></span>} />

<ParamField body="tenant" type={<span><a href="/docs/libraries/acul/js-sdk/Screens/interfaces/TenantMembers">TenantMembers</a></span>} />

<ParamField body="transaction" type={<span><a href="/docs/libraries/acul/js-sdk/Screens/interfaces/TransactionMembers">TransactionMembers</a></span>} />

<ParamField body="untrustedData" type={<span><a href="/docs/libraries/acul/js-sdk/Screens/interfaces/UntrustedDataMembers">UntrustedDataMembers</a></span>} />

<ParamField body="user" type={<span><a href="/docs/libraries/acul/js-sdk/Screens/interfaces/UserMembers">UserMembers</a></span>} />

<ParamField body="screenIdentifier" type="string">
  static
</ParamField>

<div id="methods">
  ## Méthodes
</div>

<ParamField body="getErrors" type={<span><a href="/docs/libraries/acul/js-sdk/Screens/interfaces/Error">Error</a>[]</span>}>
  Récupère le tableau des erreurs de transaction à partir du contexte, ou un tableau vide s’il n’en existe aucune.

  Un tableau d’objets d’erreur provenant du contexte de la transaction.
</ParamField>

<ParamField body="reportWebAuthnError" type="Promise<void>">
  Signale une erreur spécifique de l’API WebAuthn à Auth0.
  Cette méthode doit être utilisée si `navigator.credentials.get()` échoue d’une façon que
  `verify()` ne gère pas automatiquement, ou si le développeur souhaite explicitement
  signaler une erreur avant d’essayer une autre action.
  Elle envoie les détails de l’erreur avec `action: "showError::{errorDetails}"`.

  Une promesse qui se résout lorsque le rapport d’erreur est soumis.

  #### Lève

  Lève une erreur si l’envoi du formulaire échoue.

  ```typescript Example theme={null}
  // En supposant que "sdk" est une instance de MfaWebAuthnRoamingChallenge
  // Et que webAuthnError est un objet d’erreur provenant d’un appel navigator.credentials.get() ayant échoué.
  try {
    await sdk.reportWebAuthnError({
      error: { name: webAuthnError.name, message: webAuthnError.message }
    });
  } catch (submitError) {
    console.error("Failed to report WebAuthn error:", submitError);
  }
  ```

  <Expandable title="Paramètres">
    <ParamField body="options" type={<span><a href="/docs/libraries/acul/js-sdk/Screens/interfaces/MfaWebAuthnRoamingChallengeReportErrorOptions">MfaWebAuthnRoamingChallengeReportErrorOptions</a></span>}>
      Contient l’objet `error` avec `name` et `message`
      provenant de l’API WebAuthn, ainsi que tout autre paramètre personnalisé.

      **Propriétés**

      <ParamField body="error" type={<span><a href="/docs/libraries/acul/js-sdk/Screens/interfaces/WebAuthnErrorDetails">WebAuthnErrorDetails</a></span>}>
        L’objet d’erreur de l’API WebAuthn à signaler.
      </ParamField>
    </ParamField>
  </Expandable>
</ParamField>

<ParamField body="tryAnotherMethod" type="Promise<void>">
  Permet à l’utilisateur de se soustraire au défi WebAuthn et de sélectionner une autre méthode d’authentification multifacteur (AMF).
  Cette action soumet `action: "pick-authenticator"` à Auth0, ce qui doit amener
  l’utilisateur à un écran de sélection de facteur AMF.

  Une promesse qui se résout lorsque l’action est soumise.

  #### Lève

  Lève une erreur si l’envoi du formulaire échoue.

  ```typescript Example theme={null}
  // En supposant que "sdk" est une instance de MfaWebAuthnRoamingChallenge
  try {
    await sdk.tryAnotherMethod();
    // En cas de réussite, Auth0 gère la redirection vers la sélection AMF.
  } catch (error) {
    console.error("Failed to switch MFA method:", error);
  }
  ```

  <Expandable title="Paramètres">
    <ParamField body="options?" type={<span><a href="/docs/libraries/acul/js-sdk/Screens/interfaces/MfaWebAuthnRoamingChallengeTryAnotherMethodOptions">MfaWebAuthnRoamingChallengeTryAnotherMethodOptions</a></span>}>
      Paramètres personnalisés facultatifs pour la requête.
    </ParamField>
  </Expandable>
</ParamField>

<ParamField body="verify" type="Promise<void>">
  Initie le défi WebAuthn en appelant `navigator.credentials.get()` avec les
  options fournies dans `screen.data.publicKeyChallengeOptions`.
  En cas de réussite, elle soumet les informations d’identification obtenues à Auth0 avec `action: "default"`.
  Si `navigator.credentials.get()` échoue avec une erreur connue de l’API WebAuthn (comme `NotAllowedError`),
  cette méthode appellera en interne `reportWebAuthnError` pour informer Auth0.

  Une promesse qui se résout lorsque la tentative de vérification est soumise.
  Elle ne renvoie pas directement de données, car une opération réussie se traduit généralement par une redirection.

  #### Lève

  Lève une erreur si `screen.data.publicKeyChallengeOptions` est manquante,
  si `navigator.credentials.get()` échoue avec une erreur inattendue,
  ou si l’envoi du formulaire à Auth0 échoue.

  ```typescript Example theme={null}
  // En supposant que "sdk" est une instance de MfaWebAuthnRoamingChallenge
  try {
    await sdk.verify({ rememberDevice: true });
    // En cas de réussite, Auth0 gère la redirection.
  } catch (error) {
    console.error("Security key verification failed:", error);
    // Vérifiez sdk.transaction.errors pour les messages de validation côté serveur si la page est rechargée.
  }
  ```

  <Expandable title="Paramètres">
    <ParamField body="options?" type={<span><a href="/docs/libraries/acul/js-sdk/Screens/interfaces/VerifySecurityKeyOptions">VerifySecurityKeyOptions</a></span>}>
      **Propriétés**

      <ParamField body="rememberDevice?" type="boolean" />
    </ParamField>
  </Expandable>
</ParamField>
