このページでは、アプリケーションの reCAPTCHA による確認に対するユーザーのレスポンスを検証する方法について説明します。 バックエンドです。
ウェブユーザーの場合、次の 3 つの方法のいずれかでユーザーの応答トークンを取得できます。
g-recaptcha-response
POST パラメータ(ユーザーがサイトでフォームを送信したとき)- ユーザーが完了した後の
grecaptcha.getResponse(opt_widget_id)
reCAPTCHA による確認を - コールバック関数の文字列引数として
data-callback
がg-recaptcha
タグ属性またはgrecaptcha.render
メソッドのコールバック パラメータ
Android ライブラリ ユーザーは、 SafetyNetApi.RecaptchaTokenResult.getTokenResult() メソッドを使用し、ステータスが成功を返した場合にレスポンス トークンを取得します。
トークンの制限
各 reCAPTCHA ユーザー レスポンス トークンは 2 分間有効で、検証は 1 回しか行われません。 リプレイ攻撃を防ぐことができます。新しいトークンが必要な場合は、reCAPTCHA 検証を再実行できます。
レスポンス トークンを取得したら、reCAPTCHA で 2 分以内にトークンを検証する必要があります。 トークンが有効であることを確認します。
API リクエスト
URL: 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 | シークレット パラメータが指定されていません。 |
invalid-input-secret | シークレット パラメータが無効であるか、不正な形式です。 |
missing-input-response | レスポンス パラメータがありません。 |
invalid-input-response | レスポンス パラメータが無効であるか、不正な形式です。 |
不正なリクエスト | リクエストが無効であるか、形式が正しくありません。 |
タイムアウトまたは重複 | 応答は無効になりました。古すぎるか、以前に使用されたことがあります。 |