Verificar a resposta do usuário

Nesta página, explicamos como verificar a resposta de um usuário a um desafio reCAPTCHA no back-end do aplicativo.

Para usuários da Web, você pode receber o token de resposta do usuário de uma destas três maneiras:

  • Parâmetro POST g-recaptcha-response quando o usuário envia o formulário no site
  • grecaptcha.getResponse(opt_widget_id) depois que o usuário completar o desafio reCAPTCHA
  • Como um argumento de string para a função de callback se data-callback for especificado no atributo de tag g-recaptcha ou no parâmetro de callback no método grecaptcha.render

Para os usuários da biblioteca Android, chame o método SafetyNetApi.RecaptchaTokenResult.getTokenResult() para receber o token de resposta se o status for retornado corretamente.

Restrições de token

Cada token de resposta do usuário reCAPTCHA é válido por dois minutos e só pode ser verificado uma vez para evitar ataques repetidos. Se você precisar de um novo token, execute novamente a verificação do reCAPTCHA.

Depois de receber o token de resposta, você precisará verificá-lo em até dois minutos com o reCAPTCHA usando a seguinte API para garantir que o token é válido.

Solicitação de API

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

Parâmetro POST Descrição
segredo Obrigatório. A chave compartilhada entre seu site e o reCAPTCHA.
resposta Obrigatório. O token de resposta do usuário fornecido pela integração reCAPTCHA do lado do cliente no seu site.
Remoteip Opcional. Endereço IP do usuário.

Resposta da API

A resposta é um 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 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
}

Referência do código de erro

Código do erro Descrição
secret-entrada ausente O parâmetro secret está ausente.
secret-de entrada inválida O parâmetro secret é inválido ou está incorreto.
resposta-entrada ausente O parâmetro de resposta está ausente.
resposta-entrada inválida O parâmetro de resposta é inválido ou está incorreto.
solicitação inválida A solicitação é inválida ou está incorreta.
tempo limite ou duplicação A resposta não é mais válida: é muito antiga ou foi usada anteriormente.