> ## 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.

# ResetPasswordMfaWebAuthnRoamingChallenge

<Frame>
  <img style={{maxHeight:"400px"}} src="https://mintcdn.com/generaltranslationinc/GMqg_oKRfWVB3GIg/docs/images/cdy7uua7fh8z/oisvWlYTRgpQ030322WZk/23921a030cdb6f1cf7b147da5315ea8e/Screenshot_2025-05-28_at_13.12.43.png?fit=max&auto=format&n=GMqg_oKRfWVB3GIg&q=85&s=d83e86462bb54cb139f621261c049f1c" alt="" width="363" height="492" data-path="docs/images/cdy7uua7fh8z/oisvWlYTRgpQ030322WZk/23921a030cdb6f1cf7b147da5315ea8e/Screenshot_2025-05-28_at_13.12.43.png" />
</Frame>

ResetPasswordMfaWebAuthnRoamingChallenge

```ts Example theme={null}
// reset-password-mfa-webauthn-roaming-challenge 画面の UI コンポーネント内:
const sdk = new ResetPasswordMfaWebAuthnRoamingChallenge();

async function handleSecurityKeyAuth() {
  try {
    const userWantsToRemember = document.getElementById('remember-device-checkbox')?.checked || false;
    await sdk.useSecurityKey({ rememberDevice: sdk.screen.showRememberDevice && userWantsToRemember });
    // 成功時は、Auth0 が通常リダイレクトを処理します。
  } catch (err) {
    console.error("Security key authentication failed:", err);
    // WebAuthn API エラーの場合は、Auth0 に報告します
    if (err.name && err.message) { // DOMException 型エラーの基本チェック
      try {
        await sdk.showError({ error: { name: err.name, message: err.message } });
      } catch (reportError) {
        console.error("Failed to report WebAuthn error:", reportError);
      }
    }
    // UI を更新してユーザーに通知します（例:「セキュリティキーの検証に失敗しました。もう一度お試しください。」）
    // サーバーからのエラーメッセージでページがリロードされた可能性がある場合は、`sdk.transaction.errors` も確認してください。
  }
}
```

<div id="constructors">
  ## コンストラクター
</div>

<ParamField body="ResetPasswordMfaWebAuthnRoamingChallenge" type="Constructor">
  `ResetPasswordMfaWebAuthnRoamingChallenge` クラスの新しいインスタンスを初期化します。
  グローバルコンテキストから必要なコンテキスト（画面、トランザクションなど）を取得します。

  #### 例外

  Universal Login コンテキストが利用できない場合、またはコンテキスト内の画面名が
  `ResetPasswordMfaWebAuthnRoamingChallenge.screenIdentifier` と一致しない場合にスローされます。
</ParamField>

<div id="properties">
  ## プロパティ
</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/ScreenMembersOnResetPasswordMfaWebAuthnRoamingChallenge">ScreenMembersOnResetPasswordMfaWebAuthnRoamingChallenge</a></span>}>
  この画面に固有の画面データとプロパティ（WebAuthn チャレンジ用のものおよび `showRememberDevice`）を保持します。
</ParamField>

<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">
  この画面の一意の識別子で、内部の SDK ロジックおよびテレメトリーで使用されます。
</ParamField>

<div id="methods">
  ## メソッド
</div>

<ParamField body="getErrors" type={<span><a href="/docs/libraries/acul/js-sdk/Screens/interfaces/Error">Error</a>[]</span>}>
  コンテキストからトランザクションのエラー配列を取得します。存在しない場合は空の配列を返します。

  トランザクションコンテキストから取得されるエラーオブジェクトの配列です。
</ParamField>

<ParamField body="showError" type="Promise<void>">
  クライアント側の WebAuthn API エラー（`navigator.credentials.get()` からのエラー）を Auth0 に報告します。
  このメソッドは、[useSecurityKey](#usesecuritykey)（または `navigator.credentials.get()` の直接呼び出し）が
  標準的な WebAuthn API のエラーによって失敗した場合に呼び出すことを想定しています
  （例: ユーザーがキャンセルした場合の `NotAllowedError`、`NotFoundError`、`SecurityError`、タイムアウトなど）。
  このメソッドは、`action: "showError::{errorDetailsJsonString}"` と空の `response` とともにエラーの詳細を送信します。

  エラー報告が正常に送信されたときに解決される Promise です。
  Auth0 は `this.transaction.errors` 内に特定のエラーメッセージを含めてページを再レンダリングするか、リダイレクトする場合があります。

  #### 例外

  フォーム送信自体が失敗した場合（ネットワークエラー、不正な state など）、エラーをスローします。

  ```typescript Example theme={null}
  // `sdk.useSecurityKey()` または `navigator.credentials.get()` からのエラーを捕捉した後、UI 内で:
  if (webAuthnError instanceof DOMException) {
    await sdk.showError({
      error: { name: webAuthnError.name, message: webAuthnError.message },
      rememberDevice: userWantsToRemember // 該当する場合
    });
  }
  ```

  <Expandable title="パラメーター">
    <ParamField body="options" type={<span><a href="/docs/libraries/acul/js-sdk/Screens/interfaces/ResetPasswordMfaWebAuthnRoamingChallengeShowErrorOptions">ResetPasswordMfaWebAuthnRoamingChallengeShowErrorOptions</a></span>}>
      **プロパティ**

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

<ParamField body="tryAnotherMethod" type="Promise<void>">
  ユーザーが WebAuthn ローミング認証デバイスのチャレンジをスキップし、別の MFA（多要素認証）手段を選択できるようにします。
  このアクションは `action: "pick-authenticator"` を Auth0 に送信し、ユーザーを MFA ファクター選択画面へ遷移させます。

  `'pick-authenticator'` アクションが送信されたときに解決される Promise です。

  #### 例外

  フォーム送信が失敗した場合（ネットワークエラー、不正な state など）、エラーをスローします。

  ```typescript Example theme={null}
  // ユーザーが「別の方法を試す」ボタンをクリックしたとき:
  await sdk.tryAnotherMethod({ rememberDevice: userWantsToRemember });
  // Auth0 が MFA 選択画面へのリダイレクトを処理します。
  ```

  <Expandable title="パラメーター">
    <ParamField body="options?" type={<span><a href="/docs/libraries/acul/js-sdk/Screens/interfaces/ResetPasswordMfaWebAuthnRoamingChallengeTryAnotherMethodOptions">ResetPasswordMfaWebAuthnRoamingChallengeTryAnotherMethodOptions</a></span>}>
      **プロパティ**

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

<ParamField body="useSecurityKey" type="Promise<void>">
  WebAuthn セキュリティキーのチャレンジを開始します。
  このメソッドは内部で、`this.screen.publicKey` で指定されたチャレンジオプションを使って
  `navigator.credentials.get()` を呼び出します。
  ユーザーがセキュリティキーでの認証に成功すると、生成された
  `PublicKeyCredential` が文字列化され、`action: "default"` と共に Auth0 に送信されます。

  検証試行が送信された時点で解決される Promise を返します。
  処理が成功すると、通常は Auth0 によってユーザーがリダイレクトされます。

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

  `this.screen.publicKey` が存在しない場合（チャレンジオプションがないことを示します）、
  `navigator.credentials.get()` をラップしている `getPasskeyCredentials` が失敗した場合
  （例: ユーザーがキャンセルした、オーセンティケーターが見つからない、ハードウェアエラー）、
  または最終的な Auth0 へのフォーム送信が失敗した場合にエラーがスローされます。
  このメソッドからのエラーは必ず捕捉してください。
  WebAuthn API のエラー（`NotAllowedError` など）は
  [showError](#showerror) を使って報告する必要があります。

  ```typescript Example theme={null}
  // reset-password-mfa-webauthn-roaming-challenge 画面用の UI コンポーネント内:
  const sdk = new ResetPasswordMfaWebAuthnRoamingChallenge();

  async function handleSecurityKeyAuth() {
    try {
      const userWantsToRemember = document.getElementById('remember-device-checkbox')?.checked || false;
      await sdk.useSecurityKey({ rememberDevice: sdk.screen.showRememberDevice && userWantsToRemember });
      // 成功時には、通常 Auth0 がリダイレクト処理を行います。
    } catch (err) {
      console.error("Security key authentication failed:", err);
      // WebAuthn API エラーの場合は、Auth0 に報告します
      if (err.name && err.message) { // DOMException のようなエラーかどうかの基本的なチェック
        try {
          await sdk.showError({ error: { name: err.name, message: err.message } });
        } catch (reportError) {
          console.error("Failed to report WebAuthn error:", reportError);
        }
      }
      // ユーザーに通知するために UI を更新します（例: "セキュリティキーの検証に失敗しました。もう一度お試しください。"）。
      // また、ページがサーバーからのエラーメッセージと共に再読み込みされている可能性がある場合は、
      // `sdk.transaction.errors` も確認してください。
    }
  }
  ```

  <Expandable title="Parameters">
    <ParamField body="options?" type={<span><a href="/docs/libraries/acul/js-sdk/Screens/interfaces/ResetPasswordMfaWebAuthnRoamingChallengeUseSecurityKeyOptions">ResetPasswordMfaWebAuthnRoamingChallengeUseSecurityKeyOptions</a></span>}>
      **プロパティ**

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