Na tej stronie objaśniono, jak zweryfikować odpowiedź użytkownika na zadanie reCAPTCHA w backendzie aplikacji.
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 ukończeniu testu reCAPTCHA przez użytkownika- Jako argument ciągu znaków w funkcji wywołania zwrotnego, jeśli
data-callback
jest określony w atrybucie tagug-recaptcha
lub w parametrze wywołania zwrotnego w metodziegrecaptcha.render
Jeśli korzystasz z biblioteki Androida, możesz wywołać metodę SafetyNetApi.RecaptchaTokenResult.getTokenResult(), aby uzyskać token odpowiedzi, jeśli stan zakończy się powodzeniem.
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, aby zapobiec atakom typu replay. Jeśli potrzebujesz nowego tokena, możesz ponownie uruchomić weryfikację reCAPTCHA.
Gdy otrzymasz token odpowiedzi, musisz go zweryfikować w ciągu 2 minut za pomocą reCAPTCHA przy użyciu poniższego interfejsu API, aby upewnić się, że token jest prawidłowy.
Żądanie do interfejsu API
URL: https://www.google.com/recaptcha/api/siteverify Metoda: POST
Parametr POST | Opis |
---|---|
secret |
Wymagane. Klucz wspólny dla Twojej 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. |
bad-request | Żądanie jest nieprawidłowe lub źle sformułowane. |
timeout-or-duplicate | Odpowiedź jest już nieważna: jest zbyt stara lub została już użyta. |