reCAPTCHA Enterprise in Android-Apps integrieren

Auf dieser Seite wird erläutert, wie du reCAPTCHA Enterprise in deine Android-App integrieren kannst. Aufgrund der Variationen der Mobilgeräte in Bezug auf die Bildschirmgröße, die Leistung und die Benutzeroberfläche der Apps liegt die visuelle reCAPTCHA-Herausforderung (Ich bin kein Roboter ) nicht für mobile Apps verfügbar. Als alternative Methode finden Sie weitere Informationen unter Multi-Faktor-Authentifizierung (MFA) konfigurieren.

Hinweis

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

  2. Nach einer Sicherheitsüberprüfung können Sie auf das Android SDK zugreifen. Wenden Sie sich an unser Vertriebsteam, um diese Funktion für Ihre Website nutzen zu können.

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

  4. Bereiten Sie Ihre Entwicklungsumgebung vor, indem Sie die aktuelle Version von Android Studio herunterladen und installieren.

reCAPTCHA Enterprise in Ihre Android-App integrieren

So integrieren Sie reCAPTCHA Enterprise in Ihre Android-App:

  1. Erstellen Sie eine Testanwendung, indem Sie ein neues Android Studio-Projekt starten. Wählen Sie beim Erstellen des Projekts Leere Aktivität aus, setzen Sie die Sprache auf Java und setzen Sie das 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 aufgeführt ist, wie im folgenden Snippet gezeigt:

    allprojects {
        repositories {
            google()
        }
    }
    

    Weitere Informationen finden Sie im Maven-Repository von Google.

  3. Fügen Sie die folgende Build-Regel zum Abschnitt dependencies Ihrer build.gradle-Datei auf Anwendungsebene hinzu, um die reCAPTCHA Enterprise API-Abhängigkeit hinzuzufügen.

       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 im Manifest der Anwendung die Internetberechtigung zwischen dem ersten <manifest>-Tag und dem ersten <application>-Tag 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 unter Android 9.0 oder höher und fügen Sie das folgende Code-Snippet in die Datei gradle.properties ein.

    android.useAndroidX=true
    android.enableJetifier=true
    

    Weitere Informationen finden Sie unter Zu AndroidX migrieren.

  6. In Ihrer App (MainActivity.java) rufen Sie die reCAPTCHA Enterprise API auf, indem Sie die Methoden init(), execute() und close() in der folgenden Reihenfolge aufrufen:

    1. Rufen Sie init() auf, wenn Sie Ihre Anwendung starten oder die Aktivität mit der Aktion, die Sie schützen möchten.
    2. Rufe execute() an, nachdem du die Aktion ausgeführt hast, die du schützen möchtest. Beispielsweise wird auf die Anmeldeschaltfläche geklickt. execute() gibt dann ein RecaptchaResults-Token zurück.
    3. Rufen Sie close() auf, wenn keine zu bestätigenden Aktionen vorhanden sind.

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

Das folgende Beispielcode-Snippet zeigt, wie init()-, execute()- und close()-Methoden 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 instruction
                   // 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, kann dies daran liegen, dass in der API ein Fehler aufgetreten ist. Sie müssen Ihrer Anwendung Logik hinzufügen, um solche Fehler ordnungsgemäß zu verarbeiten.

Weitere Informationen zur Behebung von API-Fehlern finden Sie unter RecaptchaStatusCodes.

API-Referenz

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

Nächste Schritte