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

# LoginEmailVerification

<Frame>
  <img style={{maxHeight:"400px"}} src="https://mintcdn.com/generaltranslationinc/bJAwjuRiJwaYWdNy/docs/images/cdy7uua7fh8z/2kIZmIlrAHoSTyaD8thnIL/515c6f940036953d2989c7b37b7f1fe2/Screenshot_2025-05-15_at_21.18.53.png?fit=max&auto=format&n=bJAwjuRiJwaYWdNy&q=85&s=a125ab9cd55ad4b1d82f94dd1c9091ef" alt="" width="391" height="528" data-path="docs/images/cdy7uua7fh8z/2kIZmIlrAHoSTyaD8thnIL/515c6f940036953d2989c7b37b7f1fe2/Screenshot_2025-05-15_at_21.18.53.png" />
</Frame>

"login-email-verification" 画面での操作を管理します。
この画面では、ログイン処理中に本人確認を行うため、
ユーザーにメールアドレス宛に送信されたワンタイムコードの入力を促します。

入力されたコードを送信するメソッド（`continueWithCode`）や、
元のコードを受信していない場合や有効期限が切れている場合に新しいコードをリクエストするメソッド（`resendCode`）を提供します。

`BaseContext` を継承し、トランザクションの state、クライアント情報、国際化されたテキストなどの
認証フロー間で共有されるデータにアクセスします。

```typescript Example theme={null}
// LoginEmailVerification 画面 SDK の使用方法:
import LoginEmailVerification from '@auth0/auth0-acul-js/login-email-verification';

// ログインメール検証画面のマネージャーをインスタンス化
const loginEmailVerificationManager = new LoginEmailVerification();

// 画面固有のテキストにアクセス (例: タイトル、ラベル、ボタンテキスト)
const screenTexts = loginEmailVerificationManager.screen.texts;
const pageTitle = screenTexts?.title || 'Verify Your Email';
const codePlaceholder = screenTexts?.codePlaceholder || 'Enter code here';

// 前回の試行からのトランザクションエラーにアクセス
const transactionErrors = loginEmailVerificationManager.transaction.errors;
if (transactionErrors && transactionErrors.length > 0) {
  transactionErrors.forEach(error => {
    console.error(`Error Code: ${error.code}, Message: ${error.message}`);
    // これらのエラーをユーザーに適切に表示します。
  });
}

// フォームからのコード送信を処理する例
async function onCodeSubmit(enteredCode: string) {
  try {
    await loginEmailVerificationManager.continueWithCode({ code: enteredCode });
    // 検証が成功すると、Auth0 は通常ユーザーをリダイレクトします。
    // 検証エラー (例: 無効なコード) がある場合、ページは
    // 再レンダリングされ、`loginEmailVerificationManager.transaction.errors` が更新されます。
  } catch (e) {
    // この catch ブロックは送信中の予期しないエラー (例: ネットワークの問題) 用です。
    console.error('An unexpected error occurred while submitting the code:', e);
  }
}

// コード再送信リクエストを処理する例
async function onResendCodeClick() {
  try {
    await loginEmailVerificationManager.resendCode();
    // 新しいコードが送信されたことをユーザーに通知します。
    // ページが再レンダリングされる可能性があります。「too-many-emails」などの
    // 問題については `loginEmailVerificationManager.transaction.errors` を確認してください。
  } catch (e) {
    console.error('コードの再送信中に予期しないエラーが発生しました:', e);
  }
}
```

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

<ParamField body="LoginEmailVerification" type="Constructor">
  `LoginEmailVerification` 画面マネージャーのインスタンスを作成します。
  このコンストラクターでは `BaseContext` を初期化します。これは、次の処理を行うことを含みます。
</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/ScreenMembers">ScreenMembers</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">
  Login Email Verification 画面の一意の識別子です。
  この静的プロパティは SDK の `BaseContext` によって使用され、
  クラスが正しい画面コンテキストでインスタンス化されることを保証します。
</ParamField>

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

<ParamField body="continueWithCode" type="Promise<void>">
  ユーザーが入力したメール認証コードを Auth0 に送信します。
  このメソッドは、認証コードを含むフォームデータを準備して送信し、
  必須の `action: "default"` とともに `/u/login-email-verification` エンドポイントにポストします。

  フォーム送信が開始されると解決される Promise です。
  通常、送信が成功するとサーバー側でリダイレクトが行われます。
  コードが誤っている場合やエラーが発生した場合、ページは再レンダーされ、
  `this.transaction.errors` にエラーが格納されます。

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

  `payload.code` が存在しないか、文字列ではない場合にスローされます。
  送信中に `FormHandler` で問題が発生した場合（例: ネットワークエラー）にも
  スローされる可能性があります。Auth0 の検証エラー（例: "invalid-code"）は
  JS のエラーとしてスローされるのではなく、処理後に `this.transaction.errors`
  から参照できるようになります。

  ```typescript Example theme={null}
  const manager = new LoginEmailVerification();
  // 'userInputCode' はフォーム入力から取得した文字列であると仮定
  manager.continueWithCode({ code: userInputCode })
    .catch(err => {
      // 予期しない送信エラーを処理します
      displayGlobalError("Could not submit your code. Please try again.");
    });
  // 処理後、検証メッセージについては manager.transaction.errors を確認します。
  ```

  <Expandable title="パラメーター">
    <ParamField body="payload" type={<span><a href="/docs/libraries/acul/js-sdk/Screens/interfaces/ContinueWithCodeOptionPayload">ContinueWithCodeOptionPayload</a></span>}>
      Login Email Verification 画面の `continueWithCode` メソッドに渡すオプションです。
      この操作は、ユーザーがメールで受け取った認証コードを送信して、
      認証フローを継続する際に使用されます。

      **プロパティ**

      <ParamField body="code" type="string">
        ユーザーのメールに送信された認証コードです。通常は短い数字または
        英数字の文字列であり、ユーザーはこれをフォームに入力する必要があります。

        <CodeGroup>
          ```ts Example 2 theme={null}
          "ABCXYZ"
          ```
        </CodeGroup>
      </ParamField>
    </ParamField>
  </Expandable>
</ParamField>

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

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

<ParamField body="resendCode" type="Promise<void>">
  Auth0 に対して、新しい認証コードをユーザーのメールアドレスに送信するよう要求します。
  これは、ユーザーが元のコードを受け取らなかった場合や、有効期限が切れた場合に
  一般的に使用されます。このメソッドは、`action: "resend-code"` を含むフォームデータを
  `/u/login-email-verification` エンドポイントにポストします。

  再送リクエストが開始されると解決される Promise です。
  リクエストが成功すると、通常は新しいメールが送信されます。
  たとえばレート制限（`too-many-emails`）に達した場合などは、
  ページが再レンダーされ、`this.transaction.errors` が更新されることがあります。

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

  `FormHandler` で問題が発生した場合（例: ネットワークエラー）にスローされます。
  サーバー側の検証エラー（例: レート制限）は JS のエラーとしてスローされず、
  処理後に `this.transaction.errors` から参照できるようになります。

  ```typescript Example theme={null}
  const manager = new LoginEmailVerification();
  manager.resendCode()
    .then(() => {
      // 新しいコードが送信されたことをユーザーに知らせます。
      showNotification("A new verification code is on its way!");
    })
    .catch(err => {
      // 予期しない送信エラーを処理します
      displayGlobalError("Could not request a new code. Please try again later.");
    });
  // 処理後、特定の問題については manager.transaction.errors を確認します。
  ```

  <Expandable title="パラメーター">
    <ParamField body="payload?" type={<span><a href="/docs/libraries/acul/js-sdk/Screens/interfaces/ResendCodeOptionsPayload">ResendCodeOptionsPayload</a></span>}>
      Login Email Verification 画面の `resendCode` メソッドに渡すオプションです。
      この操作は、ユーザーが新しい認証コードをメールで再送するよう要求する際に使用されます。
      たとえば、最初のコードを受け取らなかった場合や、有効期限が切れた場合などです。
    </ParamField>
  </Expandable>
</ParamField>

<ParamField body="resendManager" type={<span><a href="/docs/libraries/acul/js-sdk/Screens/interfaces/ResendControl">ResendControl</a></span>}>
  **`Utility Feature`**

  この画面向けの、タイムアウト管理付き再送機能を取得します

  startResend メソッドを持つ ResendControl オブジェクト

  ```typescript Example theme={null}
  import LoginEmailVerification from '@auth0/auth0-acul-js/login-email-verification';

  const loginEmailVerification = new LoginEmailVerification();
  const { startResend } = loginEmailVerification.resendManager({
    timeoutSeconds: 15,
    onStatusChange: (remainingSeconds, isDisabled) => {
      console.log(`Resend available in ${remainingSeconds}s, disabled: ${isDisabled}`);
    },
    onTimeout: () => {
      console.log('Resend is now available');
    }
  });

  // ユーザーが再送ボタンをクリックしたときに startResend を呼び出します
  startResend();
  ```

  <Expandable title="パラメーター">
    <ParamField body="options?" type={<span><a href="/docs/libraries/acul/js-sdk/Screens/interfaces/StartResendOptions">StartResendOptions</a></span>}>
      再送機能を設定するためのオプション

      **プロパティ**

      <ParamField body="onStatusChange?" type={<span><a href="/docs/libraries/acul/js-sdk/Screens/type-aliases/OnStatusChangeCallback">OnStatusChangeCallback</a></span>} />

      <ParamField body="onTimeout" type="void" />

      <ParamField body="timeoutSeconds?" type="number" />
    </ParamField>
  </Expandable>
</ParamField>
