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 tagg-recaptcha
ou no parâmetro de callback no métodogrecaptcha.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. |