Saltar al contenido principal
useMfaPolling(options?: MfaPollingOptions)
Hook de React para gestionar el sondeo de MFA por push (por ejemplo, esperar la aprobación de una notificación push) en una pantalla de Auth0 Advanced Customization of Universal Login (ACUL).Este hook configura y controla un bucle de sondeo de larga duración que consulta repetidamente el endpoint del desafío MFA por push hasta que ocurre una de las siguientes condiciones:
  • El desafío es aprobado o denegado por el usuario, lo que activa options.onCompleted.
  • Se produce un error (error de red o una respuesta distinta de 200/429), lo que activa options.onError.
  • El componente se desmonta o se llama a stopPolling(), lo que cancela el sondeo.

Características principales

  • isRunning es reactivo: se actualiza automáticamente si el bucle de sondeo se detiene internamente o se cancela.
  • Usa una única instancia estable de sondeo (useRef) para evitar llamadas de red duplicadas y reinicios no deseados durante los re-renderizados de React.
  • Limpieza automática al desmontarse: no quedan temporizadores huérfanos ni solicitudes XHR pendientes.

Parámetros

Especifica el intervalo de sondeo, el callback de éxito (onCompleted) y el controlador de errores opcional (onError).

Devuelve

MfaPollingResult que contiene:
  • isRunningtrue mientras el sondeo está activo.
  • startPolling() — inicia o reanuda el sondeo.
  • stopPolling() — detiene el sondeo de inmediato.

Pantallas compatibles

  • 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>
  );
}

Observaciones

  • El callback onError recibe un objeto ULError con status y responseText que describen la respuesta del servidor.
  • Las respuestas internas por límite de tasa (429) se gestionan automáticamente: el sondeo espera a que finalice la ventana de restablecimiento antes de reintentar.
  • Llamar repetidamente a startPolling() mientras está en ejecución es seguro e idempotente.