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 atrybucieg-recaptcha
lub parametr wywołania zwrotnego w metodziegrecaptcha.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. |