reCAPTCHA Enterprise in Android-Apps integrieren

Auf dieser Seite wird erläutert, wie Sie reCAPTCHA Enterprise in Ihre Android-App integrieren. Aufgrund der vielfältigen Mobilgeräte in Bezug auf Bildschirmgröße, Leistung und UIs der Anwendungen ist die visuelle reCAPTCHA-Abfrage (Ich bin kein Roboter) für mobile Apps nicht verfügbar. Eine alternative Methode finden Sie unter Multi-Faktor-Authentifizierung (MFA) konfigurieren.

Hinweis

  1. Wählen Sie die beste Methode zum Einrichten von reCAPTCHA Enterprise in Ihrer Umgebung aus und schließen Sie die Einrichtung ab.

  2. Nach einer Sicherheitsüberprüfung kann auf das Android SDK zugegriffen werden. Wenden Sie sich an unser Vertriebsteam, um Ihre Website auf dieses Feature umzustellen.

  3. Erstellen Sie einen reCAPTCHA-Schlüssel für die Android-App-Plattform.

  4. Lade deine aktuelle Version von Android Studio herunter und installiere sie, um deine Entwicklungsumgebung vorzubereiten.

reCAPTCHA Enterprise in Ihre Android-App einbinden

So binden Sie reCAPTCHA Enterprise in Ihre Android-App ein:

  1. Starte eine Test-App, indem du ein neues Android Studio-Projekt startest. Wählen Sie beim Erstellen des Projekts Empty Activity aus, setzen Sie die Sprache auf Java und legen Sie das Mindest-SDK auf API 16: Android 4.1 (Jelly Bean.

  2. Achten Sie darauf, dass das Maven-Repository google() von Google in der Liste der Repositories in der Datei build.gradle auf Projektebene enthalten ist, wie im folgenden Snippet gezeigt:

    allprojects {
        repositories {
            google()
        }
    }
    

    Weitere Informationen finden Sie im Maven-Repository von Google.

  3. Um die reCAPTCHA Enterprise API-Abhängigkeit hinzuzufügen, fügen Sie die folgende Build-Regel in den Abschnitt dependencies der build.gradle-Datei auf Anwendungsebene ein.

       implementation 'com.google.android.gms:play-services-recaptcha:16.0.1'
    

    Weitere Informationen zu API-Abhängigkeiten in Android-Apps finden Sie unter Google Play-Dienste einrichten.

  4. Fügen Sie eine Internetberechtigung zwischen dem ersten <manifest>-Tag und dem ersten <application>-Tag im Manifest Ihrer Anwendung hinzu (z. B. AndroidManifest.xml). Diese Berechtigung ist erforderlich, da die reCAPTCHA Enterprise API Netzwerkvorgänge umfasst.

    <manifest ...>
    
        <uses-permission android:name="android.permission.INTERNET" />
    
        <application ...>
        ...
      </application>
    </manifest>
    
  5. Wenn Sie AndroidX-Bibliotheken in Ihrem neuen Projekt verwenden möchten, kompilieren Sie das SDK mit Android 9.0 oder höher und fügen Sie das folgende Code-Snippet in Ihren gradle.properties ein:

    android.useAndroidX=true
    android.enableJetifier=true
    

    Weitere Informationen finden Sie unter Zu AndroidX migrieren.

  6. Rufen Sie in Ihrer Anwendung (MainActivity.java) die reCAPTCHA Enterprise API auf. Rufen Sie dazu die Methoden init(), execute() und close() in der folgenden Reihenfolge auf:

    1. Rufen Sie init() auf, wenn Sie Ihre Anwendung oder die Aktivität starten, die die zu schützende Aktion enthält.
    2. Rufen Sie execute() auf, nachdem die Aktion, die Sie schützen möchten, ausgeführt wurde. Ein Beispiel: Der Nutzer klickt auf die Schaltfläche loginAnmelden“. execute() gibt dann ein RecaptchaResultData-Token zurück.
    3. Rufe close() auf, wenn keine weiteren Aktionen zur Bestätigung vorhanden sind.

    Wenn Sie diese drei Methoden in Ihrer Anwendung aufrufen, überschreiben Sie die Methoden onSuccess() und onFailure(), um beide möglichen Ergebnisse der API-Aufrufe zu verarbeiten. Insbesondere dann, wenn die API eine Instanz von ApiException an onFailure() weiterleitet, müssen Sie jeden möglichen Statuscode verarbeiten, den Sie mit getStatusCode() abrufen können. Weitere Informationen finden Sie unter Kommunikationsfehler verarbeiten.

Das folgende Beispielcode-Snippet zeigt, wie die Methoden init(), execute() und close() aufgerufen werden:

public final class MainActivity extends Activity {
   private RecaptchaHandle handle;

   @Override
   protected void onCreate(Bundle savedInstanceState) {
     super.onCreate(savedInstanceState);
     setContentView(R.layout.activity_main);

     // Step 1: Call init() once the activity starts.
     Recaptcha.getClient(this)
         .init("YOUR_SITE_KEY")
         .addOnSuccessListener(
             this,
             new OnSuccessListener<RecaptchaHandle>() {
               @Override
               public void onSuccess(RecaptchaHandle handle) {
                 // Handle success ...
                 MainActivity.this.handle = handle;
               }
             })
         .addOnFailureListener(
             this,
             new OnFailureListener() {
               @Override
               public void onFailure(@NonNull Exception e) {
                 if (e instanceof ApiException) {
                   ApiException apiException = (ApiException) e;
                   Status apiErrorStatus = apiException.getStatusCode();
                   // Handle api errors ...
                 } else {
                   // Handle other failures ...
                 }
               }
             });
   }

   public void onClick(View v) {
     // Step 2: call execute() when there is an action to protect.
     Recaptcha.getClient(this)
         .execute(this.handle, new RecaptchaAction(new RecaptchaActionType(RecaptchaActionType.LOGIN)))
         .addOnSuccessListener(
             this,
             new OnSuccessListener<RecaptchaResultData>() {
               @Override
               public void onSuccess(RecaptchaResultData response) {
                 String token = response.getTokenResult();
                 // Handle success ...
                 if (!token.isEmpty()) {
                   Log.d(TAG, "reCAPTCHA response token: " + token);
                   // Validate the response token by following the instructions
                   // when creating an assessment.
                 }
               }
             })
         .addOnFailureListener(
             this,
             new OnFailureListener() {
               @Override
               public void onFailure(@NonNull Exception e) {
                 if (e instanceof ApiException) {
                   ApiException apiException = (ApiException) e;
                   Status apiErrorStatus = apiException.getStatusCode();
                   // Handle api errors ...
                 } else {
                   // Handle other failures ...
                 }
               }
             });
   }

  @Override
  protected void onDestroy() {
    // Step 3: call close() when there is no more action to verify.
   Recaptcha.getClient(this)
       .close(handle)
       .addOnSuccessListener(
           this,
           new OnSuccessListener<Boolean>() {
             @Override
             public void onSuccess(Boolean gotClosed) {
               // Handle success ...
             }
           })
       .addOnFailureListener(
           this,
           new OnFailureListener() {
             @Override
             public void onFailure(@NonNull Exception e) {
               if (e instanceof ApiException) {
                 ApiException apiException = (ApiException) e;
                 Status apiErrorStatus = apiException.getStatusCode();
                 // Handle api errors ...
               } else {
                 // Handle other failures ...
               }
             }
           });
  }
}

Kommunikationsfehler behandeln

Wenn Ihre Anwendung nicht erfolgreich mit dem reCAPTCHA-Dienst kommunizieren kann, ist möglicherweise ein Fehler in der API aufgetreten. Sie müssen Ihrer Anwendung Logik hinzufügen, um solche Fehler ordnungsgemäß zu verarbeiten.

Weitere Informationen zur Behebung häufiger API-Fehler finden Sie unter RecaptchaStatusCodes.

API-Referenz

Eine vollständige Referenz der reCAPTCHA API für Android findest du unter com.google.android.gms.recaptcha.

Nächste Schritte