ReCAPTCHA 2.0をAndroidに統合する方法はありますか? this ライブラリを見つけて、動作させました。ただし、CAPTCHAのサーバー側の検証はサポートされていません(自分のサーバーと通信する代わりに、コードで秘密鍵を提供してからアプリ内で検証する必要があります)。
1つのアプローチは、動作するreCaptcha 2.0フォーム( reCAPTCHA Docs )を使用してHTMLファイルを作成し、それをWebサイトでホストすることです(応答性を高めて見栄えを良くします)。
次に、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 からの応答を確認できます。
お役に立てれば。
これをフォークAndroidライブラリとサーバー側ロジックの変更: https://github.com/ayltai/Android-Lib-reCAPTCHA
ReCAPTCHA Androidライブラリは、CAPTCHAをAndroidアプリでImageViewとして表示する簡単な方法を提供し、ボットがそれを悪用するのを防ぐのに役立ちます。ライブラリは、 reCAPTCHA API 。
repositories {
jcenter()
}
dependencies {
compile 'Android.lib.recaptcha:reCAPTCHA:+'
}
CAPTCHA画像を表示するには、レイアウト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" />
CAPTCHA画像全体を表示できるようにするには、Android:scaleType="centerInside"
を使用することが重要です。
または、実行時にAndroid.lib.recaptcha.ReCaptcha
のインスタンスを作成することもできます。
ReCaptcha reCaptcha = new ReCaptcha(context);
Android.lib.recaptcha.ReCaptcha
を含むアクティビティ/フラグメント/ビューで、ユーザーが応答できるようにCAPTCHA画像を表示する必要があります。
ReCaptcha reCaptcha = (ReCaptcha)findViewById(R.id.recaptcha);
reCaptcha.showChallengeAsync("your-public-key", onShowChallengeListener);
showChallengeAsync
は、CAPTCHAイメージを非同期でダウンロードして表示します。 UIスレッドで呼び出しても安全です。この呼び出しでエラーが発生しても、例外はスローされません。すべてのエラーは、CAPTCHA画像の表示に失敗したものとして扱われます。
onShowChallengeListener
はReCaptcha.OnShowChallengeListener
のインスタンスであり、CAPTCHAを表示する試みが完了したときに呼び出されます。
このメソッドの同期バージョンはshowChallenge
です。
ユーザー入力を確認するには、入力文字列をReCaptcha.verifyAnswerAsync
(またはReCaptcha.verifyAnswer
)に渡します。
reCaptcha.verifyAnswerAsync("your-private-key", "user-input", onVerifyAnswerListener);
verifyAnswerAsync
は、検証のためにユーザー入力文字列をreCAPTCHAサーバーに非同期的に送信します。 UIスレッドで呼び出しても安全です。この呼び出しでエラーが発生しても、例外はスローされません。すべてのエラーは検証の失敗として扱われます。
onVerifyAnswerListener
はReCaptcha.OnVerifyAnswerListener
のインスタンスであり、ユーザー入力の検証が完了したときに呼び出されます。
このメソッドの同期バージョンはverifyAnwser
です。
ウィジェットを強制的に特定の言語でレンダリングすることができます。このページを参照してください。
reCaptcha.setLanguageCode("fr");
Google reCaptchaAPIを提供するSafetyNetgoogleライブラリを使用して、AndroidアプリケーションにGooglereCaptchaを追加できます。
AndroidプロジェクトにSafetyNetライブラリを追加します
実装 'com.google.Android.gms:play-services-safetynet:17.0.0'
https://Gist.github.com/anehkumar/dec49c972999fd8e891d408c38a6b532
完全なチュートリアルについては、この投稿を確認してください: https://trinitytuts.com/add-google-recaptcha-in-Android-application/