> ## Documentation Index
> Fetch the complete documentation index at: https://translations.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# useMfaPolling

<ParamField body="useMfaPolling(options?: MfaPollingOptions)" type={<span><a href="/fr-CA/docs/libraries/acul/react-sdk/API-Reference/Types/interfaces/MfaPollingResult">MfaPollingResult</a></span>}>
  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

  <ParamField body="options" type={<span><a href='/fr-CA/docs/libraries/acul/react-sdk/API-Reference/Types/type-aliases/MfaPollingOptions'>MfaPollingOptions</a></span>}>
    Spécifie l’intervalle de polling, le rappel de réussite (`onCompleted`) et le gestionnaire d’erreurs facultatif (`onError`).
  </ParamField>

  ## Valeur renvoyée

  [`MfaPollingResult`](/fr-CA/docs/libraries/acul/react-sdk/API-Reference/Types/interfaces/MfaPollingResult) contenant :

  * `isRunning` — `true` 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`

  ```tsx Example theme={null}
  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](/fr-CA/docs/libraries/acul/react-sdk/API-Reference/Types/interfaces/Error)
    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.
</ParamField>
