На этой странице объясняется, как проверить ответ пользователя на запрос 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-параметр | Описание | 
|---|---|
 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 | Параметр ответа недействителен или имеет неправильный формат. | 
 bad-request | Запрос недействителен или имеет неверный формат. | 
 timeout-or-duplicate | Ответ больше недействителен: либо он слишком старый, либо использовался ранее. |