2017-12-03 2 views
2

Dies ist ein Q & Ein Stil Beitrag, den ich sowohl die Frage und eine Antwort post. Der Hauptgrund dafür ist, dass ich ziemlich viel Zeit damit verbracht habe, den einfachsten Weg zu finden, um Recaptcha V2 zu validieren. Also werde ich mein Wissen teilen, um weitere Zeitverschwendung von Entwicklern zu vermeiden.Wie validiere ich reCAPTCHA V2 Java (Servlet)

Wie eine serverseitige Validierung von Google reCAPTCHA V2 oder Invisible reCAPTCHA mit Java zu tun?

Antwort

1

Ich verwende org.json Bibliothek dafür. Holen Sie sich die jar Datei von here oder lesen Sie die docs. Fügen Sie Ihrem Projekt die JAR-Datei hinzu und importieren Sie die folgenden Klassen.

import java.io.BufferedReader; 
import java.io.InputStream; 
import java.io.InputStreamReader; 
import java.net.URL; 
import java.nio.charset.Charset; 
import org.json.JSONObject; 

Verwenden Sie die folgende Methode zur Validierung.

/** 
* Validates Google reCAPTCHA V2 or Invisible reCAPTCHA. 
* @param secretKey Secret key (key given for communication between your site and Google) 
* @param response reCAPTCHA response from client side. (g-recaptcha-response) 
* @return true if validation successful, false otherwise. 
*/ 
public static boolean isCaptchaValid(String secretKey, String response) { 
    try { 
     String url = "https://www.google.com/recaptcha/api/siteverify?" 
       + "secret=" + secretKey 
       + "&response=" + response; 
     InputStream res = new URL(url).openStream(); 
     BufferedReader rd = new BufferedReader(new InputStreamReader(res, Charset.forName("UTF-8"))); 

     StringBuilder sb = new StringBuilder(); 
     int cp; 
     while ((cp = rd.read()) != -1) { 
      sb.append((char) cp); 
     } 
     String jsonText = sb.toString(); 
     res.close(); 

     JSONObject json = new JSONObject(jsonText); 
     return json.getBoolean("success"); 
    } catch (Exception e) { 
     return false; 
    } 
} 

Rufen Sie das obige Verfahren, wie unten,

if(isCaptchaValid("enter_your_key_here", request.getParameter("g-recaptcha-response"))){ 
    //valid 
} 

hoffe, das hilft gezeigt. Prost!

+1

Dies kann auch auf der [code review site] (https://codereview.stackexchange.com/) veröffentlicht werden, wenn Sie Kommentare zu Ihrem Code erhalten möchten. – markspace

+0

@markspace sicher ... Danke! –