Verifica della risposta dell'utente

Questa pagina spiega come verificare la risposta di un utente a un test reCAPTCHA dalla tua applicazione di un backend cloud.

Per gli utenti web, puoi ottenere il token di risposta dell'utente in tre modi:

  • g-recaptcha-response Parametro POST quando l'utente invia il modulo sul tuo sito
  • grecaptcha.getResponse(opt_widget_id) dopo che l'utente ha completato il test reCAPTCHA
  • Come argomento stringa per la funzione di callback se data-callback è specificato nell'attributo del tag g-recaptcha o nel parametro di callback nel metodo grecaptcha.render

Gli utenti della libreria Android possono chiamare il metodo SafetyNetApi.RecaptchaTokenResult.getTokenResult() per ottenere il token di risposta se lo stato restituisce un valore positivo.

Limitazioni dei token

Ogni token di risposta dell'utente reCAPTCHA è valido per due minuti e può essere verificato solo una volta per per prevenire gli attacchi di ripetizione. Se hai bisogno di un nuovo token, puoi eseguire di nuovo la verifica reCAPTCHA.

Dopo aver ricevuto il token di risposta, devi verificarlo entro due minuti con reCAPTCHA utilizzando il metodo seguente per garantire che il token sia valido.

Richiesta API

URL: https://www.google.com/recaptcha/api/siteverify

METODO: POST

Parametro POST Descrizione
secret Obbligatorio. La chiave condivisa tra il tuo sito e reCAPTCHA.
response Obbligatorio. Il token di risposta dell'utente fornito dall'integrazione lato client di reCAPTCHA sul tuo sito.
remoteip (Facoltativo) L'indirizzo IP dell'utente.

Risposta dell'API

La risposta è un oggetto 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
}

Per reCAPTCHA per 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
}

Messaggio del codice di errore

Codice di errore Descrizione
missing-input-secret Parametro secret mancante.
invalid-input-secret Il parametro secret non è valido o è in un formato non corretto.
missing-input-response Manca il parametro di risposta.
invalid-input-response Il parametro di risposta non è valido o ha un formato non corretto.
bad-request La richiesta non è valida o è in un formato non corretto.
timeout-or-duplicate La risposta non è più valida: è troppo vecchia o è stata utilizzata in precedenza.