本頁面說明如何從應用程式後端驗證使用者對 reCAPTCHA 驗證問題的回應。
對於網頁使用者,您可以透過下列其中一種方式取得使用者的回應憑證:
- g-recaptcha-response使用者在網站上提交表單時的 POST 參數
- 使用者完成 reCAPTCHA 驗證後的 grecaptcha.getResponse(opt_widget_id)
- 做為回呼函式的字串引數
如果在 g-recaptcha標記屬性中指定了data-callback,或grecaptcha.render方法中的回呼參數
如果狀態傳回成功,Android 程式庫使用者可以呼叫 SafetyNetApi.RecaptchaTokenResult.getTokenResult() 方法來取得回應權杖。
符記限制
每個 reCAPTCHA 使用者回應權杖的有效期限為兩分鐘,且只能驗證一次,以防重播攻擊。如需新的權杖,您可以重新執行 reCAPTCHA 驗證。
取得回應權杖後,您必須在兩分鐘內,使用 reCAPTCHA 驗證 確認權杖有效。
API 要求
網址: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 for 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 | 回應無效:回應過舊或已使用過。 | 
