Na tej stronie wyjaśniamy, jak zweryfikować odpowiedź użytkownika na test reCAPTCHA z backendu aplikacji.
W przypadku użytkowników korzystających z wersji internetowej możesz uzyskać token odpowiedzi użytkownika na 3 sposoby:
g-recaptcha-response
parametr POST, gdy użytkownik prześle formularz w Twojej witrynie.grecaptcha.getResponse(opt_widget_id)
po wykonaniu przez użytkownika zadania reCAPTCHA- Jako argument ciągu znaków w funkcji wywołania zwrotnego, jeśli
data-callback
jest określony w atrybutach tagug-recaptcha
lub w parametrze wywołania zwrotnego w metodiegrecaptcha.render
.
W przypadku użytkowników biblioteki na Androida możesz wywołać metodę SafetyNetApi.RecaptchaTokenResult.getTokenResult(), aby uzyskać token odpowiedzi, jeśli stan zwróci wartość „successful” (udane).
Ograniczenia dotyczące tokenów
Każdy token odpowiedzi użytkownika reCAPTCHA jest ważny przez 2 minuty i może zostać zweryfikowany tylko raz, aby zapobiec atakom polegającym na odtwarzaniu. Jeśli potrzebujesz nowego tokena, możesz ponownie uruchomić weryfikację reCAPTCHA.
Po otrzymaniu tokena odpowiedzi musisz go w ciągu 2 minut zweryfikować za pomocą reCAPTCHA, korzystając z tego interfejsu API. Dzięki temu upewnisz się, że token jest prawidłowy.
Żądanie do interfejsu API
Adres 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 Androida:
{
"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
}
Odwołania do kodu błędu
Kod błędu | Opis |
---|---|
missing-input-secret |
Brakuje parametru tajnego. |
invalid-input-secret |
Parametr tajny jest nieprawidłowy lub błędnie sformatowany. |
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 ma nieprawidłowy format. |
timeout-or-duplicate |
Odpowiedź jest już nieważna: jest zbyt stara lub została już użyta. |