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