Xác minh câu trả lời của người dùng

Trang này giải thích cách xác minh câu trả lời của người dùng cho thử thách reCAPTCHA từ ứng dụng của bạn phần phụ trợ.

Đối với người dùng web, bạn có thể lấy mã thông báo phản hồi của người dùng theo một trong 3 cách sau:

  • Tham số POST g-recaptcha-response khi người dùng gửi biểu mẫu trên trang web của bạn
  • grecaptcha.getResponse(opt_widget_id) sau khi người dùng hoàn tất thử thách reCAPTCHA
  • Làm đối số chuỗi cho hàm callback của bạn nếu data-callback được chỉ định trong thuộc tính thẻ g-recaptcha hoặc tham số gọi lại trong phương thức grecaptcha.render

Đối với người dùng thư viện Android, bạn có thể gọi hàm SafetyNetApi.RecaptchaTokenResult.getTokenResult() để nhận mã thông báo phản hồi nếu trạng thái trả về thành công.

Hạn chế về mã thông báo

Mỗi mã thông báo phản hồi của người dùng reCAPTCHA có hiệu lực trong 2 phút và chỉ có thể được xác minh một lần để ngăn chặn các cuộc tấn công phát lại. Nếu cần mã thông báo mới, bạn có thể chạy lại quy trình xác minh bằng reCAPTCHA.

Sau khi nhận được mã thông báo phản hồi, bạn cần xác minh mã đó trong vòng 2 phút bằng reCAPTCHA bằng cách sử dụng API sau đây để đảm bảo mã đó hợp lệ.

Yêu cầu API

URL: https://www.google.com/recaptcha/api/siteverify

PHƯƠNG PHÁP: POST

Tham số POST Mô tả
secret Bắt buộc. Khoá dùng chung giữa trang web của bạn và reCAPTCHA.
response Bắt buộc. Mã thông báo phản hồi của người dùng do tính năng tích hợp phía máy khách của reCAPTCHA cung cấp trên trang web của bạn.
remoteip Không bắt buộc. Địa chỉ IP của người dùng.

Phản hồi của API

Phản hồi là một đối tượng 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
}

Đối với reCAPTCHA cho Android:

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

Tham chiếu mã lỗi

Mã lỗi Mô tả
missing-input-secret Thiếu thông số bí mật.
invalid-input-secret Tham số bí mật không hợp lệ hoặc không đúng định dạng.
missing-input-response Thiếu thông số phản hồi.
invalid-input-response Tham số phản hồi không hợp lệ hoặc sai định dạng.
bad-request Yêu cầu không hợp lệ hoặc không đúng định dạng.
timeout-or-duplicate Phản hồi không còn hợp lệ: quá cũ hoặc đã được sử dụng trước đó.