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