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 test backend.

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 défi reCAPTCHA
  • En tant qu'argument de chaîne pour votre fonction de rappel si data-callback est spécifié dans l'attribut de tag g-recaptcha ou dans le paramètre de rappel dans la méthode grecaptcha.render

Pour les utilisateurs de la bibliothèque Android, vous pouvez appeler la méthode SafetyNetApi.RecaptchaTokenResult.getTokenResult() pour obtenir le jeton de réponse si l'état indique une réussite.

Restrictions concernant les jetons

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

Une fois que vous avez obtenu le jeton de réponse, vous devez le valider dans les deux minutes avec 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.
response Obligatoire. Jeton de réponse de l'utilisateur fourni par l'intégration de reCAPTCHA côté client sur votre site.
remoteip 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
missing-input-secret Le paramètre secret est manquant.
invalid-input-secret Le paramètre secret n'est pas valide, ou son format n'est pas correct.
missing-input-response Le paramètre de réponse est manquant.
invalid-input-response Le paramètre de réponse n'est pas valide ou son format est incorrect.
bad-request La requête n'est pas valide, ou son format n'est pas correct.
timeout-or-duplicate La réponse n'est plus valide: elle est trop ancienne ou a déjà été utilisée.