本頁面說明如何驗證使用者從應用程式後端對 reCAPTCHA 挑戰做出的回應。
網路使用者可透過以下三種方式之一取得使用者的回應憑證:
g-recaptcha-response
POST 參數 (使用者在您的網站上提交表單時)- 使用者完成 reCAPTCHA 驗證後即
grecaptcha.getResponse(opt_widget_id)
- 如果在
g-recaptcha
標記屬性或grecaptcha.render
方法的回呼參數中指定data-callback
,則作為回呼函式的字串引數
如果是 Android 程式庫使用者,您可以呼叫 SafetyNetApi.RecaptchaTokenResult.getTokenResult() 方法,以便在狀態傳回成功時取得回應權杖。
權杖限制
每個 reCAPTCHA 使用者回應權杖的有效期限為兩分鐘,而且只能經過驗證一次,以免遭到重送攻擊。如果你需要新的權杖,可以重新執行 reCAPTCHA 驗證。
收到回應權杖後,您必須使用 reCAPTCHA 使用下列 API 在兩分鐘內驗證該憑證,以確保權杖有效。
API 要求
網址:https://www.google.com/recaptcha/api/siteverify 方法: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
}
錯誤代碼參考資料
錯誤代碼 | 說明 |
---|---|
缺少輸入密鑰 | 缺少 Secret 參數。 |
無效輸入密鑰 | 密鑰參數無效或格式錯誤。 |
遺漏輸入回應 | 缺少回應參數。 |
無效的輸入回應 | 回應參數無效或格式錯誤。 |
錯誤的要求 | 要求無效或格式錯誤。 |
逾時或重複 | 回應已失效:太舊或先前已使用過。 |