Как интегрировать reCAPTCHA 2.0 в Android
Есть ли способ интегрировать reCAPTCHA 2.0 в Android?
Я нашел эту библиотеку и получил ее работу. Однако проверка на стороне сервера CAPTCHA не поддерживается (мне нужно предоставить секретный ключ в коде, а затем проверить его в приложении вместо того, чтобы разговаривать с моим собственным сервером).
- Есть ли способ интегрировать reCAPTCHA 2.0 в Android?
- Или есть ли способ проверить CAPTCHA на моем собственном сервере с помощью этой библиотеки?
Ответы
Ответ 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.
- Создайте API Google ReCaptcha на веб-сайте Google ReCaptcha.
Добавьте библиотеку SafetyNet в свой проект Android
реализация "com.google.android.gms: play-services-safetynet: 17.0.0"
- Нажмите reCaptcha, нажав на кнопку, и добавьте приведенный ниже код для проверки пользователей, используя указанный ниже код
https://gist.github.com/anehkumar/dec49c972999fd8e891d408c38a6b532
.Для полного урока, пожалуйста, проверьте этот пост: - https://trinitytuts.com/add-google-recaptcha-in-android-application/