Проверка ответа пользователя

На этой странице объясняется, как проверить ответ пользователя на запрос reCAPTCHA из серверной части вашего приложения.

Для веб-пользователей вы можете получить токен ответа пользователя одним из трех способов:

  • POST-параметр g-recaptcha-response , когда пользователь отправляет форму на вашем сайте
  • grecaptcha.getResponse(opt_widget_id) после того, как пользователь выполнит запрос reCAPTCHA
  • В качестве строкового аргумента функции обратного вызова , если data-callback указан либо в атрибуте тега g-recaptcha , либо в параметре обратного вызова в методе grecaptcha.render

Пользователи библиотеки Android могут вызвать метод SafetyNetApi.RecaptchaTokenResult.getTokenResult(), чтобы получить токен ответа, если статус окажется успешным.

Ограничения токена

Каждый токен ответа пользователя reCAPTCHA действителен в течение двух минут и может быть проверен только один раз , чтобы предотвратить атаки повторного воспроизведения. Если вам нужен новый токен, вы можете повторно запустить проверку reCAPTCHA.

После получения токена ответа вам необходимо в течение двух минут проверить его с помощью reCAPTCHA, используя следующий API, чтобы убедиться, что токен действителен.

API-запрос

URL: https://www.google.com/recaptcha/api/siteverify МЕТОД: POST

POST-параметр Описание
секрет Необходимый. Общий ключ между вашим сайтом и reCAPTCHA.
ответ Необходимый. Токен ответа пользователя, предоставляемый клиентской интеграцией reCAPTCHA на вашем сайте.
удаленный IP-адрес Необязательный. 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
}

Ссылка на код ошибки

Код ошибки Описание
отсутствует входной секрет Секретный параметр отсутствует.
неверный-ввод-секрет Секретный параметр недействителен или имеет неправильный формат.
отсутствует ответ на ввод Параметр ответа отсутствует.
неверный-ввод-ответ Параметр ответа недействителен или имеет неправильный формат.
плохой запрос Запрос недействителен или имеет неверный формат.
тайм-аут или дубликат Ответ больше недействителен: либо он слишком старый, либо использовался ранее.