如何在Android中集成reCAPTCHA 2.0

Lan*_*lot 20 java android recaptcha

有什么方法可以在Android中集成reCAPTCHA 2.0吗?我找到了这个库并让它运行起来.但是,不支持CAPTCHA的服务器端验证(它需要我在代码中提供私钥然后在应用程序内验证它而不是与我自己的服务器通信).

  1. 有没有办法在Android中集成reCAPTCHA 2.0?
  2. 或者我有办法在我自己的服务器上验证该库的CAPTCHA吗?

com*_*879 2

分叉这个android库并修改服务器端逻辑: https://github.com/ayltai/Android-Lib-reCAPTCHA

reCAPTCHA Android 库提供了一种在 Android 应用程序中将验证码显示为 ImageView 的简单方法,帮助您阻止机器人滥用它。该库包装了reCAPTCHA API

安装

repositories {
    jcenter()
}

dependencies {
    compile 'android.lib.recaptcha:reCAPTCHA:+'
}
Run Code Online (Sandbox Code Playgroud)

布局

<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" />
Run Code Online (Sandbox Code Playgroud)

android:scaleType="centerInside"确保可以显示整个验证码图像非常重要。

或者,您可以在运行时创建一个实例android.lib.recaptcha.ReCaptcha

ReCaptcha reCaptcha = new ReCaptcha(context);
Run Code Online (Sandbox Code Playgroud)

如何显示验证码

在包含的活动/片段/视图中android.lib.recaptcha.ReCaptcha,您需要显示验证码图像以供用户响应:

ReCaptcha reCaptcha = (ReCaptcha)findViewById(R.id.recaptcha);
reCaptcha.showChallengeAsync("your-public-key", onShowChallengeListener);
Run Code Online (Sandbox Code Playgroud)

showChallengeAsync异步下载并显示验证码图像。在 UI 线程中调用是安全的。如果此调用出现任何错误,则不会引发异常。所有错误都将被视为显示验证码图像失败。

onShowChallengeListener是 的一个实例ReCaptcha.OnShowChallengeListener,当尝试显示 CAPTCHA 完成时调用该实例。

该方法的同步版本是showChallenge

如何验证用户输入

要验证用户输入,请将输入字符串传递给ReCaptcha.verifyAnswerAsync(或ReCaptcha.verifyAnswer):

reCaptcha.verifyAnswerAsync("your-private-key", "user-input", onVerifyAnswerListener);
Run Code Online (Sandbox Code Playgroud)

verifyAnswerAsync异步将用户输入字符串提交到 reCAPTCHA 服务器进行验证。在 UI 线程中调用是安全的。如果此调用出现任何错误,则不会引发异常。所有错误将被视为验证失败。

onVerifyAnswerListener是 的一个实例ReCaptcha.OnVerifyAnswerListener,当尝试验证用户输入完成时调用该实例。

该方法的同步版本是verifyAnwser

指定区域设置

您可以强制小部件以特定语言呈现。请参阅此页。

reCaptcha.setLanguageCode("fr");
Run Code Online (Sandbox Code Playgroud)