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

# useMfaPolling

<ParamField body="useMfaPolling(options?: MfaPollingOptions)" type={<span><a href="/ja/docs/libraries/acul/react-sdk/API-Reference/Types/interfaces/MfaPollingResult">MfaPollingResult</a></span>}>
  Auth0 Advanced Customization of Universal Login (ACUL) の画面で、MFA プッシュのポーリング (例: プッシュ通知の承認待ち) を管理するための React フックです。

  このフックは長時間実行されるポーリングループを設定して制御し、次のいずれかが発生するまで MFA プッシュチャレンジのエンドポイントを繰り返し確認します。

  * ユーザーがチャレンジを**承認または拒否**すると、`options.onCompleted` が呼び出されます。
  * **エラー**が発生すると (ネットワークエラー、200/429 以外のレスポンス) 、`options.onError` が呼び出されます。
  * **コンポーネントがアンマウント**されるか `stopPolling()` が呼び出されると、ポーリングはキャンセルされます。

  ### 主な機能

  * `isRunning` は**リアクティブ**で、ポーリングループが
    内部的に停止した場合やキャンセルされた場合に自動的に更新されます。
  * React の再レンダリング中に重複したネットワーク呼び出しや意図しない再開が発生しないよう、
    **安定した単一のポーリングインスタンス** (`useRef`) を使用します。
  * アンマウント時の**自動クリーンアップ**: 孤立したタイマーや解放されない XHR リクエストは発生しません。

  ## パラメーター

  <ParamField body="options" type={<span><a href='/ja/docs/libraries/acul/react-sdk/API-Reference/Types/type-aliases/MfaPollingOptions'>MfaPollingOptions</a></span>}>
    ポーリング間隔、成功時のコールバック (`onCompleted`) 、および任意のエラーハンドラー (`onError`) を指定します。
  </ParamField>

  ## 戻り値

  [`MfaPollingResult`](/ja/docs/libraries/acul/react-sdk/API-Reference/Types/interfaces/MfaPollingResult) には次が含まれます。

  * `isRunning` — ポーリングが実行中の間は `true` です。
  * `startPolling()` — ポーリングを開始または再開します。
  * `stopPolling()` — ポーリングを直ちに停止します。

  ## サポートされている画面

  * `mfa-push-challenge-push`
  * `reset-password-mfa-push-challenge-push`
  * `mfa-push-enrollment-qr`

  ```tsx Example theme={null}
  import { useMfaPolling } from '@auth0/auth0-acul-react/mfa-push-challenge-push';

  export function MfaPushStatus() {
    const { isRunning, startPolling, stopPolling } = useMfaPolling({
      intervalMs: 5000,
      onCompleted: () => console.log('Push approved!/denied'),
      onError: (error) => console.error('Polling error:', error)
    });

    return (
      <div>
        <button onClick={startPolling} disabled={isRunning}>
          {isRunning ? 'Waiting for approval…' : 'Start MFA Polling'}
        </button>
        {isRunning && <button onClick={stopPolling}>Cancel</button>}
      </div>
    );
  }
  ```

  ## 備考

  * `onError` コールバックは、サーバーのレスポンスを示す `status` と `responseText` を持つ
    [ULError](/ja/docs/libraries/acul/react-sdk/API-Reference/Types/interfaces/Error) オブジェクトを受け取ります。
  * 内部的なレート制限レスポンス (`429`) は自動的に処理されます。
    ポーリングはリセットウィンドウまで待機してから再試行します。
  * 実行中に `startPolling()` を繰り返し呼び出しても安全で、冪等です。
</ParamField>
