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

หน้านี้อธิบายวิธียืนยันการตอบกลับของผู้ใช้ต่อคำถาม 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 METHOD: POST

พารามิเตอร์ POST คำอธิบาย
ข้อมูลลับ ต้องระบุ คีย์ที่แชร์ระหว่างเว็บไซต์ของคุณกับ reCAPTCHA
การตอบกลับ ต้องระบุ โทเค็นการตอบกลับของผู้ใช้ที่ได้จากการผสานรวมฝั่งไคลเอ็นต์ 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
}

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

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