Verifica la respuesta del usuario

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 sitio
  • grecaptcha.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 etiqueta g-recaptcha o el parámetro de devolución de llamada en el método grecaptcha.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.