validate validar implementar google example java android recaptcha

implementar - validar captcha java



Cómo integrar reCAPTCHA 2.0 en Android (2)

¿Hay alguna manera de que pueda integrar reCAPTCHA 2.0 en Android? Encontré this biblioteca y la puse funcionando. Sin embargo, la verificación del lado del servidor de CAPTCHA no es compatible (necesita que proporcione la clave privada en el código y luego la verifique dentro de la aplicación en lugar de hablar con mi propio servidor).

  1. ¿Hay alguna manera de integrar reCAPTCHA 2.0 en Android?
  2. ¿O hay alguna manera de verificar el CAPTCHA en mi propio servidor con esa biblioteca?

Bifurque esta biblioteca de Android y modifique la lógica del lado del servidor: this

La biblioteca de reCAPTCHA para Android proporciona una forma sencilla de mostrar un CAPTCHA como un ImageView en su aplicación de Android, lo que le ayuda a evitar que los bots abusen de él. La biblioteca envuelve la API reCAPTCHA .

Instalación

repositories { jcenter() } dependencies { compile ''android.lib.recaptcha:reCAPTCHA:+'' }

El diseño

Para mostrar la imagen CAPTCHA, debe agregar un elemento <android.lib.recaptcha.ReCaptcha /> a su diseño XML:

<android.lib.recaptcha.ReCaptcha android:id="@+id/recaptcha" android:layout_width="match_parent" android:layout_height="wrap_content" android:scaleType="centerInside" />

Es importante usar android:scaleType="centerInside" para garantizar que se pueda visualizar toda la imagen CAPTCHA.

Alternativamente, puede crear una instancia de android.lib.recaptcha.ReCaptcha en tiempo de ejecución:

ReCaptcha reCaptcha = new ReCaptcha(context);

Cómo mostrar CAPTCHA

En su actividad / fragmento / vista que contiene android.lib.recaptcha.ReCaptcha , necesita mostrar una imagen CAPTCHA para que el usuario responda:

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

showChallengeAsync descarga y muestra la imagen CAPTCHA de forma asíncrona. Es seguro invocar en el hilo de la interfaz de usuario. No se lanzará ninguna excepción en caso de error por esta llamada. Todos los errores se tratarán como fallidos al mostrar la imagen CAPTCHA.

onShowChallengeListener es una instancia de ReCaptcha.OnShowChallengeListener , que se llama cuando se completa un intento de mostrar un CAPTCHA.

La versión síncrona de este método es showChallenge .

Cómo verificar la entrada del usuario

Para verificar la entrada del usuario, pase la cadena de entrada a ReCaptcha.verifyAnswerAsync (o ReCaptcha.verifyAnswer ):

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

verifyAnswerAsync envía de forma asíncrona la cadena de entrada del usuario al servidor reCAPTCHA para su verificación. Es seguro invocar en el hilo de la interfaz de usuario. No se lanzará ninguna excepción en caso de error por esta llamada. Todos los errores serán tratados como falla de verificación.

onVerifyAnswerListener es una instancia de ReCaptcha.OnVerifyAnswerListener , que se llama cuando se completa un intento de verificar la entrada del usuario.

La versión síncrona de este método es verifyAnwser .

Especifique una localidad

Puede forzar la reproducción del widget en un idioma específico. Por favor refiérase a esta página.

reCaptcha.setLanguageCode("fr");


Un enfoque sería crear un archivo HTML con un formulario reCaptcha 2.0 en funcionamiento ( documentos reCAPTCHA ) y hospedarlo en un sitio web (haga que responda para que se vea bien).

luego cargue la URL en una vista web y cree un puente para que pueda interactuar entre Java y Javascript (addJavascriptInterface)

Actividad de 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");

Clase de puente:

public class BridgeWebViewClass { @JavascriptInterface public void reCaptchaCallbackInAndroid(String g_response){ log.d("reCaptcha", "token" + g_response); } }

Y ahora, desde su archivo HTML, puede ejecutar la Clase Bridge como una función de 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>

Ahora puede verificar la respuesta de las llamadas de Android https://www.google.com/recaptcha/api/siteverify

Espero que esto ayude.