web-dev-qa-db-ja.com

reCAPTCHA2.0をAndroid

ReCAPTCHA 2.0をAndroidに統合する方法はありますか? this ライブラリを見つけて、動作させました。ただし、CAPTCHAのサーバー側の検証はサポートされていません(自分のサーバーと通信する代わりに、コードで秘密鍵を提供してからアプリ内で検証する必要があります)。

  1. ReCAPTCHA 2.0をAndroidに統合する方法はありますか?
  2. または、そのライブラリを使用して自分のサーバー上のCAPTCHAを確認する方法はありますか?
20
Lancelot

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 からの応答を確認できます。

お役に立てれば。

2
Etienne GT

これをフォークAndroidライブラリとサーバー側ロジックの変更: https://github.com/ayltai/Android-Lib-reCAPTCHA

ReCAPTCHA Androidライブラリは、CAPTCHAをAndroidアプリでImageViewとして表示する簡単な方法を提供し、ボットがそれを悪用するのを防ぐのに役立ちます。ライブラリは、 reCAPTCHA API

Installation

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);

CAPTCHAの表示方法

Android.lib.recaptcha.ReCaptchaを含むアクティビティ/フラグメント/ビューで、ユーザーが応答できるようにCAPTCHA画像を表示する必要があります。

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

showChallengeAsyncは、CAPTCHAイメージを非同期でダウンロードして表示します。 UIスレッドで呼び出しても安全です。この呼び出しでエラーが発生しても、例外はスローされません。すべてのエラーは、CAPTCHA画像の表示に失敗したものとして扱われます。

onShowChallengeListenerReCaptcha.OnShowChallengeListenerのインスタンスであり、CAPTCHAを表示する試みが完了したときに呼び出されます。

このメソッドの同期バージョンはshowChallengeです。

ユーザー入力を確認する方法

ユーザー入力を確認するには、入力文字列をReCaptcha.verifyAnswerAsync(またはReCaptcha.verifyAnswer)に渡します。

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

verifyAnswerAsyncは、検証のためにユーザー入力文字列をreCAPTCHAサーバーに非同期的に送信します。 UIスレッドで呼び出しても安全です。この呼び出しでエラーが発生しても、例外はスローされません。すべてのエラーは検証の失敗として扱われます。

onVerifyAnswerListenerReCaptcha.OnVerifyAnswerListenerのインスタンスであり、ユーザー入力の検証が完了したときに呼び出されます。

このメソッドの同期バージョンはverifyAnwserです。

ロケールを指定します

ウィジェットを強制的に特定の言語でレンダリングすることができます。このページを参照してください。

reCaptcha.setLanguageCode("fr");
1
compte14031879

Google reCaptchaAPIを提供するSafetyNetgoogleライブラリを使用して、AndroidアプリケーションにGooglereCaptchaを追加できます。

  1. Google ReCaptchaWebサイトからGoogleReCaptchaAPIを作成します。
  2. AndroidプロジェクトにSafetyNetライブラリを追加します

    実装 '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/

0
Aneh Thakur