メインコンテンツへスキップ
useMfaPolling(options?)
Auth0 Advanced Customization of Universal Login (ACUL) の画面で、 MFA(多要素認証)のプッシュ通知ポーリング(プッシュ通知での承認待ちなど)を管理するための React フックです。このフックは長時間動作するポーリングループをセットアップして制御し、次のいずれかが発生するまで MFA プッシュチャレンジのエンドポイントを繰り返しチェックします。
  • チャレンジがユーザーによって承認または拒否されると、options.onCompleted が呼び出されます。
  • エラー(ネットワークエラー、200/429 以外のレスポンス)が発生すると、options.onError が呼び出されます。
  • コンポーネントがアンマウントされるか stopPolling() が呼び出されると、ポーリングがキャンセルされます。

主な機能

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

パラメータ

options?
ポーリング間隔、成功時のコールバック関数(onCompleted)、および任意のエラーハンドラー(onError)を指定する MfaPollingOptions

戻り値

MfaPollingResult次の内容を含む MfaPollingResult オブジェクト:
  • isRunning — ポーリングがアクティブな間は true
  • startPolling() — ポーリングを開始または再開します。
  • stopPolling() — 直ちにポーリングを停止します。

対応している画面

  • mfa-push-challenge-push
  • reset-password-mfa-push-challenge-push
  • mfa-push-enrollment-qr
Example
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 コールバックは、サーバーレスポンスを説明する statusresponseText を含む ULError オブジェクトを受け取ります。
  • 内部のレート制限レスポンス(429)は自動的に処理されます。 ポーリングはリセットウィンドウまで待機してから再試行します。
  • 実行中に startPolling() を繰り返し呼び出しても安全であり、その動作は冪等です。