Vérifier la réponse de l'utilisateur

Cette page explique comment valider 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:

  • Paramètre g-recaptcha-response POST 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 tag g-recaptcha ou dans le paramètre de rappel de la méthode grecaptcha.render

Si vous utilisez la bibliothèque Android, vous pouvez appeler la méthode SafetyNetApi.RecaptchaTokenResult.getTokenResult() pour obtenir un jeton de réponse si l'état est renvoyé.

Restrictions relatives aux jetons

Chaque jeton de réponse utilisateur reCAPTCHA est valide pendant deux minutes et ne peut être validé qu'une seule fois pour empêcher les attaques par relecture. Si vous avez besoin d'un nouveau jeton, vous pouvez relancer 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 que le jeton est valide.

Requête API

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

Paramètre POST Description
secret, code secret Obligatoire. Clé partagée entre votre site et reCAPTCHA.
réponse Obligatoire. Jeton de réponse utilisateur fourni par l'intégration reCAPTCHA côté client sur votre site.
télécommande 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-d'entrée manquant Le paramètre secret est manquant.
code secret d'entrée incorrect Le paramètre secret n'est pas valide, ou son format n'est pas correct.
réponse-entrée manquante Le paramètre de réponse est manquant.
réponse saisie incorrecte Le paramètre de réponse n'est pas valide, ou son format n'est pas correct.
demande incorrecte La requête n'est pas valide, ou son format n'est pas correct.
délai avant expiration ou doublon La réponse n'est plus valide: elle est trop ancienne ou a déjà été utilisée.