אימות התגובה של המשתמש

במאמר הזה מוסבר איך לאמת את תגובת המשתמש לאתגר reCAPTCHA בקצה העורפי של האפליקציה.

עבור משתמשי אינטרנט, ניתן לקבל את אסימון התגובה של המשתמש באחת משלוש דרכים:

  • g-recaptcha-response הפרמטר POST כשהמשתמש שולח את הטופס באתר שלך
  • grecaptcha.getResponse(opt_widget_id) אחרי שהמשתמש משלים את האתגר reCAPTCHA
  • כארגומנט במחרוזת אל פונקציית הקריאה החוזרת אם data-callback צוין במאפיין התג g-recaptcha או בפרמטר של הקריאה החוזרת בשיטה grecaptcha.render

עבור משתמשי ספריית Android, תוכלו לקרוא לשיטה SafetyNetApi.RecaptchaTokenResult.getTokenResult() כדי לקבל אסימון תגובה אם הסטטוס הצליח.

הגבלות אסימונים

כל אסימון תגובה למשתמש של reCAPTCHA תקף למשך שתי דקות, ואפשר לאמת אותו רק פעם אחת כדי למנוע התקפות הפעלה מחדש. אם נדרש אסימון חדש, ניתן להריץ מחדש את אימות ה-reCAPTCHA.

אחרי שתקבלו את אסימון התגובה, תצטרכו לאמת אותו תוך שתי דקות באמצעות reCAPTCHA באמצעות ה-API הבא כדי לוודא שהאסימון תקף.

בקשת API

כתובת URL: https://www.google.com/recaptcha/api/siteverify METHOD: POST

פרמטר POST תיאור
secret חובה. המפתח המשותף בין האתר שלך לבין 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
}

הפניה לקוד שגיאה

קוד שגיאה תיאור
חסר קלט-סודי הפרמטר הסודי חסר.
קלט-סוד לא חוקי הפרמטר הסודי לא תקין או פגום.
חסר קלט-תשובה הפרמטר 'תגובה' חסר.
קלט לא חוקי פרמטר התגובה אינו חוקי או פגום.
בקשה לא תקינה הבקשה לא חוקית או פגומה.
זמן קצוב או כפול התשובה אינה תקפה יותר: היא ישנה מדי או שנעשה בה שימוש בעבר.