En esta página, se explica cómo verificar la respuesta de un usuario a un desafío de reCAPTCHA desde el backend de tu aplicación.
En el caso de los usuarios web, puedes obtener el token de respuesta del usuario de una de estas tres maneras:
- Parámetro POST de
g-recaptcha-response
cuando el usuario envía el formulario en tu sitio grecaptcha.getResponse(opt_widget_id)
después de que el usuario complete el desafío de reCAPTCHA- Como argumento de cadena para tu función de devolución de llamada si
data-callback
se especifica en el atributo de etiquetag-recaptcha
o el parámetro de devolución de llamada en el métodogrecaptcha.render
Si eres usuario de la biblioteca de Android, puedes llamar al SafetyNetApi.RecaptchaTokenResult.getTokenResult() para obtener un token de respuesta si el estado indica que la solicitud fue exitosa.
Restricciones de tokens
Cada token de respuesta de usuario de reCAPTCHA es válido durante dos minutos y solo se puede verificar una vez para evitar ataques de repetición. Si necesitas un token nuevo, puedes volver a ejecutar la verificación de reCAPTCHA.
Después de obtener el token de respuesta, debes verificarlo en un plazo de dos minutos con reCAPTCHA usando el siguiente API para garantizar que el token sea válido.
Solicitud a la API
URL: https://www.google.com/recaptcha/api/siteverify
MÉTODO: POST
Parámetro POST | Descripción |
---|---|
secret |
Obligatorio. La clave compartida entre tu sitio y reCAPTCHA. |
response |
Obligatorio. Es el token de respuesta del usuario que proporciona la integración del cliente de reCAPTCHA en tu sitio. |
remoteip |
Opcional. La dirección IP del usuario. |
Respuesta de la API
La respuesta es un objeto 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
}
Para reCAPTCHA en 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
}
Referencia de código de error
Código de error | Descripción |
---|---|
missing-input-secret |
Falta el parámetro secreto. |
invalid-input-secret |
El parámetro secreto no es válido o tiene errores de formato. |
missing-input-response |
Falta el parámetro de respuesta. |
invalid-input-response |
El parámetro de respuesta no es válido o tiene errores de formato. |
bad-request |
La solicitud no es válida o no tiene el formato correcto. |
timeout-or-duplicate |
La respuesta ya no es válida: es demasiado antigua o se usó anteriormente. |