Vérification de la réponse de l'utilisateur

Cette page explique comment vérifier la réponse d'un utilisateur à un test reCAPTCHA à partir du backend de votre application.

Pour les utilisateurs Web, vous pouvez obtenir le jeton de réponse de l'utilisateur de trois manières différentes:

  • Paramètre POST g-recaptcha-response lorsque l'utilisateur envoie le formulaire sur votre site
  • grecaptcha.getResponse(opt_widget_id) une fois que l'utilisateur a terminé le test reCAPTCHA
  • En tant qu'argument de chaîne de votre fonction de rappel si data-callback est spécifié dans l'attribut de balise g-recaptcha ou dans le paramètre de rappel de la méthode grecaptcha.render.

Pour les utilisateurs de la bibliothèque Android, vous pouvez appeler la méthode SafetyNetApi.RecaptchaTokenResult.getTokenResult() pour obtenir un jeton de réponse si l'état renvoie un résultat positif.

Restrictions liées aux jetons

Chaque jeton de réponse utilisateur reCAPTCHA est valide pendant deux minutes et ne peut être validé qu'une seule fois pour éviter les attaques par rejeu. Si vous avez besoin d'un nouveau jeton, vous pouvez réexécuter la validation reCAPTCHA.

Après avoir obtenu le jeton de réponse, vous devez le valider dans un délai de deux minutes à l'aide de reCAPTCHA à l'aide de l'API suivante pour vous assurer qu'il est valide.

Requête API

URL: https://www.google.com/recaptcha/api/siteverify MÉTHODE: POST

Paramètre POST Description
secret Obligatoire. Clé partagée entre votre site et reCAPTCHA.
réponse Obligatoire. Jeton de réponse de l'utilisateur fourni par l'intégration de reCAPTCHA côté client sur votre site.
adresse IP distante Facultatif. Adresse IP de l'utilisateur.

Réponse de l'API

La réponse est un objet JSON:

{
  "success": true|false,
  "challenge_ts": timestamp,  // timestamp of the challenge load (ISO format yyyy-MM-dd'T'HH:mm:ssZZ)
  "hostname": string,         // the hostname of the site where the reCAPTCHA was solved
  "error-codes": [...]        // optional
}

Pour reCAPTCHA Android:

{
  "success": true|false,
  "challenge_ts": timestamp,  // timestamp of the challenge load (ISO format yyyy-MM-dd'T'HH:mm:ssZZ)
  "apk_package_name": string, // the package name of the app where the reCAPTCHA was solved
  "error-codes": [...]        // optional
}

Informations de référence sur les codes d'erreur

Code d'erreur Description
secret-entrée-manquant Le paramètre secret est manquant.
secret-entrée-non valide Le paramètre secret n'est pas valide, ou son format n'est pas correct.
réponse d'entrée manquante Le paramètre de réponse est manquant.
Réponse d'entrée incorrecte Le paramètre de réponse n'est pas valide, ou son format n'est pas correct.
requête incorrecte La requête n'est pas valide, ou son format n'est pas correct.
temporisation ou duplication La réponse n'est plus valide: elle est trop ancienne ou a déjà été utilisée.