[Документация Yandex Cloud](../../../../index.md) > [Yandex SmartCaptcha](../../../index.md) > [Практические руководства](../../index.md) > Капча в приложении Android

# SmartCaptcha в приложении на Android

# Yandex SmartCaptcha в приложении на Android

Чтобы встроить [SmartCaptcha](../../../index.md) в приложение на Android:
1. [Создайте JavaScript Interface](#create-js-interface).
1. [Настройте WebView для работы с капчей](#customize-webview).
1. [Получите результат прохождения капчи](#get-result).

## Перед началом работы {#before-begin}

1. [Разместите HTML-страницу](../website.md) на своем сервере или воспользуйтесь страницей на сервере Yandex Cloud — `https://smartcaptcha.cloud.yandex.ru/webview`).
1. [Создайте капчу](../../../operations/create-captcha.md).
1. На вкладке **Обзор** [получите ключи капчи](../../../operations/get-keys.md):
   * **Ключ клиента** — для загрузки страницы с капчей;
   * **Ключ сервера** — для получения результата прохождения капчи.

## Создайте JavaScript Interface {#create-js-interface}

1. Создайте [класс](../../../concepts/js-interface.md), который будет принимать сообщения с помощью функции обратного вызова от веб-страницы с капчей.
1. Определите метод `onGetToken(token: String)` с аннотацией `@JavascriptInterface`. Он вызывается, когда веб-страница возвращает токен прохождения капчи:

   ```kotlin
   class WebJsInterface {

     @JavascriptInterface
     fun onGetToken(token: String) {
       //Ваш код.
     }
   }
   ```

## Настройте WebView для работы с капчей {#customize-webview}

1. Создайте **WebView** и добавьте его на экран.
1. Загрузите в **WebView** URL веб-страницы с капчей.
1. Вставьте в URL [query-параметр](../../../concepts/widget-methods.md#methods) `sitekey=<ключ_клиентской_части>`:

   ```kotlin
   val webView = findViewById<WebView>(R.id.webViewCaptcha)
   webView.loadUrl("URL_страницы_с_капчей?sitekey=<ключ_клиентской_части>")
   ```

1. Добавьте в **WebView** созданный JavaScript Interface. Укажите вторым параметром `NativeClient` — это имя, на которое веб-страница будет отправлять сообщения с помощью функции обратного вызова:

   ```kotlin
   settings.javaScriptEnabled = true // Включает выполнение JavaScript.
   addJavascriptInterface(WebJsInterface(), "NativeClient")
   ```

## Получите результат прохождения капчи {#get-result}

1. Сохраните токен прохождения капчи. Он вернется в методе `onGetToken(token: String)`, когда сервис обработает попытку.
1. Для проверки токена отправьте POST-запрос на адрес `https://smartcaptcha.cloud.yandex.ru/validate`, передав параметры в формате `x-www-form-urlencoded`:

   * `secret` — [ключ сервера](../../../concepts/keys.md);
   * `token` — одноразовый токен, полученный после прохождения проверки;
   * `ip` — IP-адрес пользователя, с которого пришел запрос на проверку токена. Этот параметр не обязателен, однако мы просим передавать IP-адрес пользователя при запросах. Это помогает улучшить качество работы SmartCaptcha.

   {% note info %}

   Данная логика должна выполняться на бэкенде. В само Android-приложение секретный ключ `secret` попасть не должен.

   {% endnote %}

   >Пример запроса:
   >
   >```text
   >https://smartcaptcha.cloud.yandex.ru/validate?secret=<ключ_сервера>&ip=<IP-адрес_пользователя>&token=<токен>
   >```

1. Получите [ответ с сервера](../../../concepts/validation.md). Он содержит JSON-объект с полями `status` и `message`.

   >Например:
   >
   >* Это человек:
   >
   >  ```json
   >  {
   >    "status": "ok",
   >    "message": ""
   >  }
   >```
   >
   >* Это робот:
   >
   >  ```json
   >  {
   >    "status": "failed",
   >    "message": ""
   >  }