java - rails - recaptcha widget




reCAPTCHA 2.0をAndroidに統合する方法 (2)

1つのアプローチは、動作するreCaptcha 2.0フォーム( reCAPTCHA Docs )を使用してHTMLファイルを作成し、それをWebサイトでホストすることです(反応的に見えるようにします)。

WebViewにURLをロードして、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

お役に立てれば。

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

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

このアンドロイドライブラリをフォークし、サーバー側のロジックを変更します: this : this

reCAPTCHA Androidライブラリは、あなたのAndroidアプリケーションにCAPTCHAを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);

CAPTCHAの表示方法

android.lib.recaptcha.ReCaptchaを含むあなたのアクティビティ/フラグメント/ビューでは、ユーザが応答するためにCAPTCHAイメージを表示する必要があります:

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

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

onShowChallengeListenerは、 onShowChallengeListenerのインスタンスで、CAPTCHAの表示が完了すると呼び出されます。

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

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

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

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

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

onVerifyAnswerListeneronVerifyAnswerListenerのインスタンスで、ユーザー入力の検証が完了すると呼び出されます。

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

ロケールを指定する

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

reCaptcha.setLanguageCode("fr");




recaptcha