このページでは、以前の SiteVerify API エンドポイント(https://www.google.com/recaptcha/api/siteverify)を使用して、アプリケーションのバックエンドから reCAPTCHA チャレンジに対するユーザーのレスポンスを検証する方法について説明します。このエンドポイントは、CreateAssessment を使用できない以前の統合またはサードパーティ製プラグインを維持している場合にのみ使用してください。
始める前に
SiteVerify エンドポイントを呼び出すには、キーの以前の秘密鍵が必要です。 Google Cloud コンソールでシークレット キーを見つけるには、 Google Cloud コンソールでシークレット キーを取得するをご覧ください。シークレット キーはバックエンド サーバーで安全に保管し、クライアントサイド コードで公開しないでください。
ユーザーのレスポンス トークンを取得する
以前のウェブ統合では、非エンタープライズ JavaScript API(https://www.google.com/recaptcha/api.js)が読み込まれます。この API は、grecaptcha.enterprise ではなく grecaptcha オブジェクトのメソッドを提供します。フロントエンドでユーザーのレスポンス トークンを取得するには、次のいずれかの方法を使用します。
- ユーザーがサイトでフォームを送信する際の
g-recaptcha-responsePOST パラメータから。 - ユーザーが reCAPTCHA v2 のチャレンジを完了した後に
grecaptcha.getResponse(opt_widget_id)を呼び出す。このメソッドは、レスポンス トークンを文字列として返します。チャレンジが完了していない場合は、空の文字列を返します。省略可能なopt_widget_idパラメータは、grecaptcha.render()によって返されるウィジェット ID を指定します。省略した場合、デフォルトは最初に作成されたウィジェットになります。 - ユーザーがチャレンジを完了したときにコールバック関数に渡される文字列引数として(
g-recaptchaHTML 要素のdata-callback属性またはgrecaptcha.render(container, parameters)メソッドのcallbackパラメータのいずれかでコールバック関数名を指定した場合)。 - スコアベース(v3)キーの
grecaptcha.execute(site_key, {action: action_name})によって返されたPromiseの解決された値から。
以前の grecaptcha メソッド(render、getResponse、execute、ready、reset)と g-recaptcha タグ属性は、grecaptcha.enterprise と同じパラメータを使用します。パラメータの詳細については、reCAPTCHA の JavaScript API リファレンスをご覧ください。
更新された reCAPTCHA JavaScript API に移行するには、reCAPTCHA JavaScript API を移行するをご覧ください。
トークンの制限
各 reCAPTCHA ユーザー レスポンス トークンは 2 分間有効で、リプレイ攻撃を防ぐため、各トークンは 1 回しか検証できません。レスポンス トークンを受け取ってから 2 分以内に、reCAPTCHA で検証します。新しいトークンが必要な場合は、reCAPTCHA による確認を再実行します。
API リクエスト
次のエンドポイントとメソッドを使用してリクエストを送信します。
- URL:
https://www.google.com/recaptcha/api/siteverify(www.google.comにアクセスできない場合はhttps://www.recaptcha.net/recaptcha/api/siteverify。reCAPTCHA をグローバルに使用するを参照) - Method:
POST
リクエストに次の POST パラメータを含めます。
| POST パラメータ | 説明 |
|---|---|
secret |
必須。サイトと reCAPTCHA の間で共有される秘密鍵。 |
response |
必須。サイトの reCAPTCHA クライアントサイド統合によって提供されるユーザー レスポンス トークン。 |
remoteip |
省略可。ユーザーの IP アドレス。 |
API レスポンス
SiteVerify エンドポイントは JSON オブジェクトを返します。
ウェブ統合(スコアベースの v3、チェックボックスの v2、または非表示の v2 キー)の場合、レスポンスの形式は次のようになります。
{
"success": true|false, // whether this request was a valid reCAPTCHA token for your site
"score": number, // the score for this request (0.0 - 1.0) for score-based (v3) keys
"action": string, // the action name for this request (important to verify)
"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
}
エラーコードの参照
次の表に、error-codes 配列に表示される可能性のあるエラーコードを示します。
| エラーコード | 説明 |
|---|---|
missing-input-secret |
secret パラメータが指定されていません。 |
invalid-input-secret |
secret パラメータが無効であるか、不適切な形式です。 |
missing-input-response |
response パラメータが指定されていません。 |
invalid-input-response |
response パラメータが無効であるか、不適切な形式です。 |
bad-request |
リクエストが無効であるか、不適切な形式です。 |
timeout-or-duplicate |
レスポンスは期限切れか、すでに使用されているため、無効になっています。 |