Passer au contenu principal
useMfaPolling(options?: MfaPollingOptions)
Hook React permettant de gérer le polling MFA push (par exemple, attendre l’approbation d’une notification push) sur un écran ACUL (Advanced Customization of Universal Login) d’Auth0.Ce hook configure et contrôle une boucle de polling de longue durée qui vérifie de façon répétée le point de terminaison du défi MFA push jusqu’à ce que l’un des événements suivants se produise :
  • Le défi est approuvé ou refusé par l’utilisateur, ce qui déclenche options.onCompleted.
  • Une erreur se produit (erreur réseau, réponse autre que 200/429), ce qui déclenche options.onError.
  • Le composant est démonté ou stopPolling() est appelé, ce qui annule le polling.

Fonctionnalités clés

  • isRunning est réactif — il se met automatiquement à jour si la boucle de polling s’arrête d’elle-même ou est annulée.
  • Utilise une instance de polling unique et stable (useRef) pour éviter les appels réseau en double et les redémarrages involontaires lors des nouveaux rendus React.
  • Nettoyage automatique au démontage : aucun minuteur orphelin ni aucune requête XHR non libérée.

Paramètres

Spécifie l’intervalle de polling, le rappel de réussite (onCompleted) et le gestionnaire d’erreurs facultatif (onError).

Valeur renvoyée

MfaPollingResult contenant :
  • isRunningtrue tant que le polling est actif.
  • startPolling() — démarre ou reprend le polling.
  • stopPolling() — arrête immédiatement le polling.

Écrans pris en charge

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

Remarques

  • Le rappel onError reçoit un objet ULError dont status et responseText décrivent la réponse du serveur.
  • Les réponses internes de limitation de débit (429) sont gérées automatiquement : le polling attend la fenêtre de réinitialisation avant de réessayer.
  • Appeler startPolling() de façon répétée pendant l’exécution est sûr et idempotent.