Passer au contenu principal
useMfaPolling(options?)
Hook React pour gérer le sondage des notifications push AMF (MFA) (p. ex., en attente de 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 sondage de longue durée qui vérifie de façon répétée le point de terminaison du défi push AMF 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 ou 429), ce qui déclenche options.onError.
  • Le composant est démonté ou stopPolling() est appelé, ce qui annule le sondage.

Fonctionnalités clés

  • isRunning est réactif — il se met automatiquement à jour si la boucle de sondage s’arrête en interne ou est annulée.
  • Utilise une instance de sondage 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 requête XHR abandonnée.

Paramètres

options?
MfaPollingOptions qui spécifient l’intervalle de sondage, le rappel en cas de succès (onCompleted) et le gestionnaire d’erreurs facultatif (onError).

Valeur de retour

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

É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 avec status et responseText décrivant la réponse du serveur.
  • Les réponses de limitation de débit internes (429) sont gérées automatiquement : le sondage attend la fin de la fenêtre de réinitialisation avant de réessayer.
  • Appeler startPolling() de manière répétée pendant l’exécution est sécuritaire et idempotent.