การยืนยันคำตอบของผู้ใช้

หน้านี้อธิบายวิธียืนยันการตอบกลับของผู้ใช้ต่อคำถาม reCAPTCHA จากแอปพลิเคชันของคุณ แบ็กเอนด์

สําหรับผู้ใช้เว็บ คุณสามารถรับโทเค็นการตอบกลับของผู้ใช้ได้ 3 วิธีดังนี้

  • g-recaptcha-response พารามิเตอร์ POST เมื่อผู้ใช้ส่งแบบฟอร์มในเว็บไซต์
  • grecaptcha.getResponse(opt_widget_id) หลังจากที่ผู้ใช้ผ่านด่าน reCAPTCHA
  • เป็นอาร์กิวเมนต์สตริงให้กับฟังก์ชัน Callback หากระบุ data-callback ในแอตทริบิวต์แท็ก g-recaptcha หรือพารามิเตอร์ Callback ในเมธอด grecaptcha.render

สําหรับผู้ใช้ไลบรารี Android คุณสามารถเรียกใช้เมธอด SafetyNetApi.RecaptchaTokenResult.getTokenResult() เพื่อรับโทเค็นการตอบกลับหากสถานะแสดงผลสำเร็จ

ข้อจำกัดของโทเค็น

โทเค็นการตอบกลับของผู้ใช้ reCAPTCHA แต่ละรายการจะใช้ได้เป็นเวลา 2 นาที และจะยืนยันได้ครั้งเดียวเพื่อ เพื่อป้องกันการโจมตีซ้ำ หากต้องใช้โทเค็นใหม่ คุณก็เรียกใช้การยืนยัน reCAPTCHA อีกครั้งได้

หลังจากได้รับโทเค็นการตอบกลับแล้ว คุณต้องยืนยันโทเค็นดังกล่าวภายใน 2 นาทีด้วย reCAPTCHA โดยใช้ API ต่อไปนี้เพื่อให้แน่ใจว่าโทเค็นถูกต้อง

คำขอ API

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

วิธีการ: POST

พารามิเตอร์ POST คำอธิบาย
secret ต้องระบุ กุญแจที่แชร์ระหว่างเว็บไซต์กับ reCAPTCHA
response ต้องระบุ โทเค็นการตอบกลับของผู้ใช้ที่ได้จากการผสานรวมฝั่งไคลเอ็นต์ reCAPTCHA ในเว็บไซต์ของคุณ
remoteip ไม่บังคับ ที่อยู่ IP ของผู้ใช้

การตอบกลับจาก API

การตอบสนองจะเป็นออบเจ็กต์ 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
}

สำหรับ reCAPTCHA สำหรับ 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
}

ข้อมูลอ้างอิงรหัสข้อผิดพลาด

รหัสข้อผิดพลาด คำอธิบาย
missing-input-secret ไม่มีพารามิเตอร์ลับ
invalid-input-secret พารามิเตอร์ลับไม่ถูกต้องหรือผิดรูปแบบ
missing-input-response ไม่มีพารามิเตอร์การตอบกลับ
invalid-input-response พารามิเตอร์การตอบกลับไม่ถูกต้องหรือผิดรูปแบบ
bad-request คำขอไม่ถูกต้องหรือผิดรูปแบบ
timeout-or-duplicate การตอบกลับไม่ถูกต้องแล้ว เนื่องจากเก่าเกินไปหรือเคยใช้ไปแล้ว