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

主な機能

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

パラメーター

ポーリング間隔、成功時のコールバック (onCompleted) 、および任意のエラーハンドラー (onError) を指定します。

戻り値

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() を繰り返し呼び出しても安全で、冪等です。