Weryfikowanie odpowiedzi użytkownika

Na tej stronie objaśniono, jak zweryfikować odpowiedź użytkownika na zadanie reCAPTCHA z poziomu Twojej aplikacji z backendem.

W przypadku użytkowników internetu token odpowiedzi możesz uzyskać na 3 sposoby:

  • g-recaptcha-response parametr POST, gdy użytkownik przesyła formularz na Twojej stronie.
  • grecaptcha.getResponse(opt_widget_id) po zakończeniu wykonywania zadania przez użytkownika zadanie reCAPTCHA
  • Jako argument w postaci ciągu w funkcji wywołania zwrotnego jeśli atrybut data-callback jest określony w atrybucie g-recaptcha lub parametr wywołania zwrotnego w metodzie grecaptcha.render

Jeśli używasz biblioteki Androida, możesz wywołać funkcję SafetyNetApi.RecaptchaTokenResult.getTokenResult() do uzyskania tokena odpowiedzi, jeśli stan zostanie zwrócony.

Ograniczenia dotyczące tokenów

Każdy token odpowiedzi użytkownika reCAPTCHA jest ważny przez 2 minuty i można go zweryfikować tylko raz w celu i zapobiegania atakom typu „replay”. Jeśli potrzebujesz nowego tokena, możesz ponownie uruchomić weryfikację reCAPTCHA.

Po otrzymaniu tokena odpowiedzi musisz go zweryfikować w ciągu 2 minut za pomocą reCAPTCHA przy użyciu poniższy interfejs API, aby zapewnić poprawność tokena.

Żądanie do interfejsu API

Adres URL: https://www.google.com/recaptcha/api/siteverify Metoda: WPIS

Parametr POST Opis
secret Wymagane. Klucz wspólny dla witryny i reCAPTCHA.
response Wymagane. Token odpowiedzi użytkownika udostępniany przez integrację po stronie klienta reCAPTCHA w Twojej witrynie.
remoteip Opcjonalnie: Adres IP użytkownika.

Odpowiedź interfejsu API

Odpowiedź to obiekt 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
}

W przypadku reCAPTCHA na Androidzie:

{
  "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
}

Odniesienie do kodu błędu

Kod błędu Opis
missing-input-secret Brak parametru obiektu tajnego.
invalid-input-secret Parametr obiektu tajnego jest nieprawidłowy lub źle sformułowany.
missing-input-response Brak parametru odpowiedzi.
invalid-input-response Parametr odpowiedzi jest nieprawidłowy lub źle sformułowany.
błędne żądanie Żądanie jest nieprawidłowe lub źle sformułowane.
limit czasu lub duplikat Odpowiedź jest już nieważna: jest zbyt stara lub została już użyta.