Подтвердить что ты не робот

Как интегрировать reCAPTCHA 2.0 в Android

Есть ли способ интегрировать reCAPTCHA 2.0 в Android? Я нашел эту библиотеку и получил ее работу. Однако проверка на стороне сервера CAPTCHA не поддерживается (мне нужно предоставить секретный ключ в коде, а затем проверить его в приложении вместо того, чтобы разговаривать с моим собственным сервером).

  • Есть ли способ интегрировать reCAPTCHA 2.0 в Android?
  • Или есть ли способ проверить CAPTCHA на моем собственном сервере с помощью этой библиотеки?
4b9b3361

Ответ 1

Один из подходов - создать HTML файл с рабочей формой reCaptcha 2.0 (reCAPTCHA Docs) и разместить на веб-сайте ( сделайте его отзывчивым, чтобы он выглядел хорошо).

затем загрузите URL-адрес в WebView и создайте мост, чтобы вы могли взаимодействовать между Java и Javascript (addJavascriptInterface)

Активность Android:

WebView mWebView = (WebView) findViewById(R.id.webview);

mWebView.getSettings().setJavaScriptEnabled(true);
mWebView.getSettings().setBuiltInZoomControls(false);
mWebView.loadUrl("http://url/to/recaptcha/file/index.html");
mWebView.addJavascriptInterface(new BridgeWebViewClass(this), "BridgeWebViewClass");

Класс моста:

public class BridgeWebViewClass {

    @JavascriptInterface
    public void reCaptchaCallbackInAndroid(String g_response){
        log.d("reCaptcha", "token" + g_response);
    }
}

И теперь из вашего HTML файла вы можете запустить класс Bridge как функцию Javascript:

<div class="g-recaptcha" data-sitekey="YOUR_CAPTCHA_SITE_KEY" data-callback="captchaResponse"></div>

<script type="text/javascript">
    function captchaResponse(token){
        BridgeWebViewClass.reCaptchaCallbackInAndroid(token);
    }
</script>

Теперь вы можете проверить ответ от Android-телефона https://www.google.com/recaptcha/api/siteverify

Надеюсь, что это поможет.

Ответ 2

Откройте эту библиотеку Android и измените логику на стороне сервера: https://github.com/ayltai/Android-Lib-reCAPTCHA

Библиотека Android reCAPTCHA предоставляет простой способ показать CAPTCHA как ImageView в вашем приложении для Android, помогая вам запретить ботам злоупотреблять им. Библиотека обертывает reCAPTCHA API.

Установка

repositories {
    jcenter()
}

dependencies {
    compile 'android.lib.recaptcha:reCAPTCHA:+'
}

Макет

Чтобы показать изображение CAPTCHA, вам нужно добавить элемент <android.lib.recaptcha.ReCaptcha /> в ваш макет XML:

<android.lib.recaptcha.ReCaptcha
    android:id="@+id/recaptcha"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:scaleType="centerInside" />

Важно использовать android:scaleType="centerInside", чтобы обеспечить отображение всего изображения CAPTCHA.

В качестве альтернативы вы можете создать экземпляр android.lib.recaptcha.ReCaptcha во время выполнения:

ReCaptcha reCaptcha = new ReCaptcha(context);

Как показать CAPTCHA

В вашей активности/фрагменте/представлении, содержащей android.lib.recaptcha.ReCaptcha, вам нужно отобразить изображение CAPTCHA для ответа пользователя:

ReCaptcha reCaptcha = (ReCaptcha)findViewById(R.id.recaptcha);
reCaptcha.showChallengeAsync("your-public-key", onShowChallengeListener);

showChallengeAsync загружает и показывает изображение CAPTCHA асинхронно. Он безопасно ссылаться на поток пользовательского интерфейса. Никакое исключение не будет выбрано в случае какой-либо ошибки по этому вызову. Все ошибки будут считаться неудачными при показе изображения CAPTCHA.

onShowChallengeListener - это экземпляр ReCaptcha.OnShowChallengeListener, который вызывается, когда попытка показать CAPTCHA завершена.

Синхронная версия этого метода showChallenge.

Как проверить ввод пользователя

Чтобы проверить ввод пользователя, введите строку ввода ReCaptcha.verifyAnswerAsync (или ReCaptcha.verifyAnswer):

reCaptcha.verifyAnswerAsync("your-private-key", "user-input", onVerifyAnswerListener);

verifyAnswerAsync асинхронно подает строку ввода пользователя на сервер reCAPTCHA для проверки. Он безопасно ссылаться на поток пользовательского интерфейса. Никакое исключение не будет выбрано в случае какой-либо ошибки по этому вызову. Все ошибки будут рассматриваться как сбой проверки.

onVerifyAnswerListener - это экземпляр ReCaptcha.OnVerifyAnswerListener, который вызывается, когда попытка проверки ввода пользователя завершена.

Синхронная версия этого метода verifyAnwser.

Укажите локаль

Вы можете заставить виджет отображать на определенном языке. См. Эту страницу.

reCaptcha.setLanguageCode("fr");

Ответ 3

Вы можете добавить Google reCaptcha в свое приложение для Android с помощью библиотеки Google SafetyNet, которая предоставляет API Google reCaptcha.

  1. Создайте API Google ReCaptcha на веб-сайте Google ReCaptcha.
  2. Добавьте библиотеку SafetyNet в свой проект Android

    реализация "com.google.android.gms: play-services-safetynet: 17.0.0"

  3. Нажмите reCaptcha, нажав на кнопку, и добавьте приведенный ниже код для проверки пользователей, используя указанный ниже код

https://gist.github.com/anehkumar/dec49c972999fd8e891d408c38a6b532

.Для полного урока, пожалуйста, проверьте этот пост: - https://trinitytuts.com/add-google-recaptcha-in-android-application/