fork 这个 android 库并修改服务器端逻辑:
https://github.com/ayltai/Android-Lib-reCAPTCHA
reCAPTCHA Android 库提供了一种在您的 Android 应用中将 CAPTCHA 显示为 ImageView 的简单方法,帮助您阻止机器人滥用它。该库包装了reCAPTCHA API。
安装
repositories {
jcenter()
}
dependencies {
compile 'android.lib.recaptcha:reCAPTCHA:+'
}
布局
要显示验证码图片,您需要在布局 XML 中添加 <android.lib.recaptcha.ReCaptcha /> 元素:
<android.lib.recaptcha.ReCaptcha
android:id="@+id/recaptcha"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:scaleType="centerInside" />
请务必使用android:scaleType="centerInside",以确保可以显示整个验证码图像。
或者,您可以在运行时创建android.lib.recaptcha.ReCaptcha 的实例:
ReCaptcha reCaptcha = new ReCaptcha(context);
如何显示验证码
在包含android.lib.recaptcha.ReCaptcha 的活动/片段/视图中,您需要显示验证码图像以供用户响应:
ReCaptcha reCaptcha = (ReCaptcha)findViewById(R.id.recaptcha);
reCaptcha.showChallengeAsync("your-public-key", onShowChallengeListener);
showChallengeAsync 异步下载并显示验证码图像。在 UI 线程中调用是安全的。如果此调用出现任何错误,则不会引发异常。所有错误都将被视为无法显示验证码图像。
onShowChallengeListener 是ReCaptcha.OnShowChallengeListener 的一个实例,当尝试显示验证码时调用它。
这个方法的同步版本是showChallenge。
如何验证用户输入
要验证用户输入,请将输入字符串传递给ReCaptcha.verifyAnswerAsync(或ReCaptcha.verifyAnswer):
reCaptcha.verifyAnswerAsync("your-private-key", "user-input", onVerifyAnswerListener);
verifyAnswerAsync 将用户输入的字符串异步提交到 reCAPTCHA 服务器进行验证。在 UI 线程中调用是安全的。如果此调用出现任何错误,则不会引发异常。所有错误将被视为验证失败。
onVerifyAnswerListener 是ReCaptcha.OnVerifyAnswerListener 的一个实例,当尝试验证用户输入完成时调用它。
这个方法的同步版本是verifyAnwser。
指定地区
您可以强制小部件以特定语言呈现。请参考此页面。
reCaptcha.setLanguageCode("fr");