หน้านี้จะอธิบายวิธียืนยันการตอบกลับของผู้ใช้ reCAPTCHA จากแบ็กเอนด์ของแอปพลิเคชัน
สําหรับผู้ใช้เว็บ คุณจะได้รับโทเค็นการตอบสนองของผู้ใช้ด้วย 1 ใน 3 วิธีต่อไปนี้
- พารามิเตอร์ POST ของ
g-recaptcha-response
เมื่อผู้ใช้ส่งแบบฟอร์มในเว็บไซต์ grecaptcha.getResponse(opt_widget_id)
หลังจากที่ผู้ใช้ทําภารกิจ reCAPTCHA สําเร็จแล้ว- เป็นอาร์กิวเมนต์สตริงสําหรับฟังก์ชันเรียกกลับ หากมีการระบุ
data-callback
ในแอตทริบิวต์แท็กg-recaptcha
หรือพารามิเตอร์เรียกกลับในเมธอดgrecaptcha.render
สําหรับผู้ใช้ไลบรารี Android คุณเรียกใช้เมธอด SafetyNetApi.RecaptchaTokenResult.getTokenResult() เพื่อรับโทเค็นการตอบสนองได้หากสถานะกลับมาสําเร็จ
ข้อจํากัดของโทเค็น
โทเค็นการตอบกลับของผู้ใช้ reCAPTCHA แต่ละรายการจะใช้ได้เป็นเวลา 2 นาที และได้รับการยืนยันได้เพียงครั้งเดียวเท่านั้นเพื่อป้องกันการเล่นซ้ํา หากต้องการโทเค็นใหม่ คุณจะเรียกใช้การยืนยัน reCAPTCHA อีกครั้งได้
หลังจากที่รับโทเค็นการตอบกลับแล้ว คุณจะต้องยืนยันภายใน 2 นาทีด้วย reCAPTCHA โดยใช้ API ต่อไปนี้เพื่อให้แน่ใจว่าโทเค็นถูกต้อง
คำขอ API
URL: https://www.google.com/recaptcha/api/siteverify เมธอด: POST
พารามิเตอร์ POST | คำอธิบาย |
---|---|
ข้อมูลลับ | ต้องระบุ คีย์ที่ใช้ร่วมกันระหว่างเว็บไซต์และ reCAPTCHA |
การตอบกลับ | ต้องระบุ โทเค็นการตอบสนองของผู้ใช้ที่ได้จากการผสานรวมฝั่งไคลเอ็นต์ของ reCAPTCHA ในเว็บไซต์ |
รีโมต | ไม่บังคับ ที่อยู่ 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
}
ข้อมูลอ้างอิงรหัสข้อผิดพลาด
รหัสข้อผิดพลาด | คำอธิบาย |
---|---|
ไม่มี-อินพุต-ข้อมูลลับ | ไม่มีพารามิเตอร์ข้อมูลลับ |
อินพุต-ข้อมูลลับไม่ถูกต้อง | พารามิเตอร์ข้อมูลลับไม่ถูกต้องหรือผิดรูปแบบ |
ไม่มีการตอบสนองอินพุต | ไม่มีพารามิเตอร์การตอบกลับ |
การตอบกลับที่ป้อนไม่ถูกต้อง | พารามิเตอร์การตอบกลับไม่ถูกต้องหรือผิดรูปแบบ |
คําขอไม่ถูกต้อง | คําขอไม่ถูกต้องหรือผิดรูปแบบ |
หมดเวลาหรือทําซ้ํา | คําตอบนี้ใช้ไม่ได้แล้ว ไม่ว่าจะเก่าเกินไปหรือเคยใช้แล้ว |