Подключение и автообработка капчи
В инструкции описано, как установить и подключить VK ID Captcha SDK для Android-приложения, а также как настроить отображение капчи и обработку результатов с помощью интерсептора:
- 1.
- 2.
- 3.
Требования
Платформа Android, уровень API – 21 или новее: android:minSdkVersion="21".
Шаг 1. Подключение репозитория
Для интеграции используйте maven-репозиторий:
maven {
url("https://artifactory-external.vkpartner.ru/artifactory/vk-id-captcha/android/")
}
Шаг 2. Установление зависимостей
Подключите зависимости VK ID Captcha SDK Android. Текущая версия ${sdkVersion} = 0.0.5.
dependencies {
implementation "com.vk.id.captcha:vkid-captcha:${sdkVersion}"
}
В Android Manifest вашего приложения переопределите authority провайдера, который инициализирует SDK.
<application>
<provider
android:name="com.vk.id.captcha.init.SdkInitContentProvider"
android:authorities="your.unique.authority"
android:exported="false"
tools:replace="authorities" />
</application>Шаг 3. Отображение и обработка капчи
После подключения VK ID Captcha SDK Android интегрируйте капчу одним из способов:
- •С помощью интерсептора — рекомендуется, если вы используете
OkHttp. - •С помощью listener-интерфейсов — запасной вариант, если вы не используете
OkHttp.
Независимо от способа интеграции (интерсептор или listener-интерфейс), обработка капчи включает два типа ошибок, которые может вернуть API ВКонтакте:
- •ошибка капчи
14— содержит"error_code": 14,"error_msg": "Captcha needed"и ссылку для инициализации сессии капчи в полеredirect_uri. - •заголовки
X-Challenge-SolutionиX-Challenge-Url— содержат ссылку для инициализации сессии капчи.
C помощью интерсепторов (рекомендуется)
Этот способ интеграции подходит, если вы используете OkHttp.
Добавьте интерсептор, который реализован в VK ID Captcha SDK Android:
OkHttpClient.Builder()
...
.addInterceptor(
CaptchaHandlingInterceptor(
domains = setOf("api.vk.ru") // Список доменов, для которых должна обрабатываться ошибка капчи (опционально). По умолчанию обрабатываются все домены
)
)
...
.build()
Если этот интерсептор вам не походит, вы можете реализовать свой.