En esta página, se explica cómo verificar la respuesta de un usuario a un desafío de reCAPTCHA desde el backend de la aplicación.
Para los usuarios web, puede obtener el token de respuesta del usuario de una de las siguientes tres maneras:
g-recaptcha-response
el parámetro POST cuando el usuario envía el formulario en tu sitiogrecaptcha.getResponse(opt_widget_id)
después de que el usuario complete el desafío de reCAPTCHA- Como un argumento de string 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
Para los usuarios de la biblioteca de Android, puedes llamar al método SafetyNetApi.RecaptchaTokenResult.getTokenResult() a fin de obtener un token de respuesta si el estado se muestra correctamente.
Restricciones del token
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 mediante la siguiente API para asegurarte de 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. |
respuesta | Obligatorio. Es el token de respuesta del usuario que proporciona la integración de cliente de reCAPTCHA en tu sitio. |
control remoto | 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 para 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 |
---|---|
Falta el secreto de entrada | Falta el parámetro secreto. |
secreto de entrada no válido | El parámetro secreto no es válido o tiene un formato incorrecto. |
falta la respuesta de entrada | Falta el parámetro de respuesta. |
respuesta-entrada-no válida | El parámetro de respuesta no es válido o tiene un formato incorrecto. |
solicitud incorrecta | La solicitud no es válida o presenta errores de formato. |
tiempo de espera o duplicado | La respuesta ya no es válida: es demasiado antigua o se usó anteriormente. |