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-responseparametr 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-callbackjest określony w atrybutach tagug-recaptchalub 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. | 
