このページでは、アプリケーションのバックエンドから送られた reCAPTCHA チャレンジに対するユーザーのレスポンスを確認する方法について説明します。
ウェブユーザーの場合は、ユーザーのレスポンス トークンを次の 3 つの方法のいずれかで取得できます。
g-recaptcha-response
ユーザーがサイトでフォームを送信したときの POST パラメータ- ユーザーが reCAPTCHA チャレンジを完了した後の
grecaptcha.getResponse(opt_widget_id)
- コールバック関数の文字列引数として、
data-callback
がg-recaptcha
タグ属性またはgrecaptcha.render
メソッドのコールバック パラメータで指定されている場合
Android ライブラリ ユーザーの場合は、SafetyNetApi.RecaptchaTokenResult.getTokenResult() メソッドを呼び出して、ステータスが成功した場合にレスポンス トークンを取得できます。
トークンの制限
reCAPTCHA ユーザー レスポンス トークンはそれぞれ 2 分間有効で、リプレイ攻撃の防止のため 1 回検証できます。新しいトークンが必要な場合は、reCAPTCHA 検証を再実行できます。
レスポンス トークンを取得したら、次の API を使用して reCAPTCHA で 2 分以内にトークンが有効であることを確認する必要があります。
API リクエスト
URL: https://www.google.com/recaptcha/api/siteverify 方法: POST
POST パラメータ | 説明 |
---|---|
Secret | 必須。サイトと reCAPTCHA の間で共有キー。 |
件の回答 | 必須。サイトに 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
}
エラーコードの参照
エラーコード | 説明 |
---|---|
見つからない場合の入力シークレット | シークレット パラメータがありません。 |
無効な入力シークレット | シークレット パラメータが無効であるか不適切な形式です。 |
不足している入力レスポンス | レスポンス パラメータが指定されていません。 |
無効な入力レスポンス | レスポンス パラメータが無効であるか不適切な形式です。 |
不正リクエスト | リクエストが無効であるか不適切な形式です。 |
タイムアウトまたは重複 | レスポンスは無効になりました。古すぎるか、すでに使用されています。 |