驗證使用者回應('s)

本頁面說明如何從應用程式後端驗證使用者對 reCAPTCHA 問題的回應。

對於網頁使用者,您可以透過下列其中一種方式取得使用者的回應權杖:

  • g-recaptcha-response 使用者在網站上提交表單時的 POST 參數
  • 使用者完成 reCAPTCHA 驗證後的 grecaptcha.getResponse(opt_widget_id)
  • 如果在 g-recaptcha 標記屬性或 grecaptcha.render 方法的回呼參數中指定 data-callback,則做為回呼函式的字串引數

如果是 Android 程式庫使用者,您可以呼叫 SafetyNetApi.RecaptchaTokenResult.getTokenResult() 方法,並在狀態傳回成功時取得回應權杖。

符記限制

每個 reCAPTCHA 使用者回應權杖的有效期限為 2 分鐘,且只能驗證一次,以防止重播攻擊。如需新的權杖,您可以重新執行 reCAPTCHA 驗證。

取得回應權杖後,您需要在兩分鐘內,使用以下 API 透過 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 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 缺少 Secret 參數。
invalid-input-secret 密鑰參數無效或格式錯誤。
missing-input-response 缺少回應參數。
invalid-input-response 回應參數無效或格式錯誤。
bad-request 要求無效或格式錯誤。
timeout-or-duplicate 回應已失效:太舊或之前使用過。