Verknüpfen Sie Ihr Google-Konto direkt über Ihre Plattform.

Die Kontoverknüpfung kann direkt in der mobilen App vorgenommen werden. So können Nutzer ihr Konto in Ihrem Dienst mit ihrem Google-Konto verknüpfen. Über diesen Link erhält Google Zugriff auf die Daten, die der Nutzer zum Teilen erteilt hat.

Bei dieser Vorgehensweise wird die Leistung der Kontoverknüpfung verbessert, da Nutzer im vertrauten Kontext Ihrer App statt in einer Assistant-Unterhaltung angesprochen werden. Die App lässt sich in Nutzer-Onboarding, Einstellungen und andere App-Oberflächen einbinden. So bietet sich die Möglichkeit, deine Google Assistant-Aktion zu entdecken und mit ihr zu interagieren. Nach dem Verknüpfen kannst du beispielsweise anbieten, dass der Nutzer direkt zu deiner Aktion gelangt.

Dies sind einige Vorteile für Nutzer:

  • Nutzer können die Kontoverknüpfung in Ihrer App starten und abschließen, in der sie bereits vertraut sind.
  • Nutzer benötigen keine Anmeldedaten, da sie bereits auf dem Gerät und in Ihrer mobilen App authentifiziert wurden.

Dies sind einige Vorteile für Entwickler:

  • Sie können festlegen, wo in Ihrer mobilen App geworben und die Kontoverknüpfung initiiert werden soll, z. B. in den Nutzereinstellungen, in Interstitials oder nach der Anmeldung eines Nutzers in Ihrer mobilen App. Wenn Sie mehrere Einstiegspunkte hinzufügen, können Sie Kontoverknüpfungen einfacher festlegen. und damit die Interaktion und die Anzahl der verknüpften Konten erhöhen.
  • höhere Conversion-Rate, da Nutzer die Verknüpfung in weniger Schritten abschließen können als beim webbasierten OAuth-Ablauf.
  • Geringer Entwicklungsaufwand für die Implementierung des Links von Ihrer Plattform (Android), da dieser Vorgang Ihre vorhandene Implementierung von OAuth2.0 nutzt, vorausgesetzt, Sie haben bereits eine implementiert.
  • Die Abbruchrate wurde reduziert, da Nutzer ihre Anmeldedaten nicht noch einmal eingeben müssen und den Vorgang in weniger Schritten abschließen können. Die Abbruchrate kann in Abläufen, in denen Nutzer sich zurückrufen und ihre Anmeldedaten eingeben müssen, bis zu 80% betragen.

Funktionsweise

Die Verknüpfung von Ihrer Plattform aus erfolgt in den folgenden Schritten:

  1. Der Nutzer klickt bzw. tippt in der mobilen App auf einen Verknüpfungstrigger.
  2. Der Nutzer wählt das zu verknüpfende Google-Konto aus.
    1. Der Nutzer wählt für die Verknüpfung ein vorhandenes Google-Konto auf dem Gerät aus oder meldet sich mit einem neuen Konto an.
  3. Dem Nutzer wird ein von Google gehosteter Zustimmungsbildschirm angezeigt und er muss zustimmen, dass er fortfahren oder den Vorgang abbrechen möchte, um die Verknüpfung zu beenden.
  4. Der Nutzer sieht Ihren Zustimmungsbildschirm und muss zustimmen, um fortzufahren oder den Vorgang abzubrechen, um die Verknüpfung zu beenden.
  5. Die Verknüpfung wird zwischen dem Konto des Nutzers, Ihrem Dienst und seinem Google-Konto hergestellt.

Abbildung 1. Link aus dem Plattformfluss

Voraussetzungen

Sie benötigen Folgendes, um den Link von Ihrer Plattform zu implementieren:

Einrichtung

Bevor Sie die folgenden Schritte ausführen können, müssen Sie den Registrierungsprozess für die Kontoverknüpfung abgeschlossen haben.

Entwicklungsumgebung einrichten

Laden Sie die neuesten Google Play-Dienste auf Ihrem Entwicklungshost herunter:

  1. Öffnen Sie den Android SDK Manager.
  1. Suchen Sie unter SDK-Tools nach Google Play-Dienste.

  2. Wenn der Status für diese Pakete nicht „Installiert“ ist, wählen Sie beide aus und klicken Sie auf Pakete installieren.

Eigene App konfigurieren

  1. Fügen Sie in der Datei build.gradle auf Projektebene das Maven-Repository von Google in die Abschnitte buildscript und allprojects ein.

    buildscript {
        repositories {
            google()
        }
    }
    
    allprojects {
        repositories {
            google()
        }
    }
    
  2. Fügen Sie der Gradle-Datei Ihres Moduls auf App-Ebene die Abhängigkeiten für die „Link with Google“ API hinzu. Diese ist in der Regel app/build.gradle:

    dependencies {
      implementation 'com.google.android.gms:play-services-auth:21.0.0'
    }
    

Durch den Link in Ihrer Plattform wird ein von Ihrem Dienst bereitgestelltes Zugriffstoken generiert, das von Google gespeichert wird. Die Einwilligung muss eingeholt werden, bevor das Token für den Nutzer zurückgegeben wird.

Folgen Sie den Schritten unten, um die Einwilligung des Nutzers einzuholen und ein Autorisierungscode-Token über das Google Play Services SDK zurückzugeben.

  1. Erstellen Sie einen PendingIntent, mit dem Ihre Einwilligungsaktivität gestartet werden kann. Die Einwilligung wird von der Play Services API gestartet. Du musst beim Aufruf der API eine PendingIntent angeben. Der Wert wird im Folgenden als consentPendingIntent bezeichnet.

    Kotlin

    // Build a PendingIntent that can launch the consent activity
    val consentPendingIntent = buildConsentPendingIntent()
    

    Java

    // Build a PendingIntent that can launch your consent activity
    PendingIntent consentPendingIntent =
              buildConsentPendingIntent();
    
  2. Zugehörige Aktivität zur Verarbeitung der Einwilligungsabsicht erstellen

    Kotlin

      class ConsentActivity : AppCompatActivity
    
      private fun onConsentAccepted() {
          // Obtain a token (for simplicity, we’ll ignore the async nature
          // of the following call)
          val token = getToken()
          val intent = Intent()
                      .putExtra(SaveAccountLinkingTokenRequest.EXTRA_TOKEN,
                                token)
          setResult(Activity.RESULT_OK, intent)
          finish()
      }
    
      private fun onConsentRejectedOrCanceled() {
          setResult(Activity.RESULT_CANCELED)
          finish()
      }
    

    Java

      public class ConsentActivity extends AppCompatActivity {
        ...
        private void onConsentAccepted() {
          // Obtain a token (for simplicity, we’ll ignore the async nature of
          // the following call
          String token = getToken();
          Intent intent = new Intent();
          intent.putExtra(SaveAccountLinkingTokenRequest.EXTRA_TOKEN, token);
          setResult(Activity.RESULT_OK, intent);
          finish();
        }
    
        private void onConsentRejectedOrCanceled() {
          setResult(Activity.RESULT_CANCELED, null);
          finish();
        }
     }
    
    

    Wir gehen davon aus, dass die Methoden onConsentAccpeted() und onConsentRejectedOrCanceled() aufgerufen werden, wenn der Nutzer Ihre Einwilligung akzeptiert bzw. ablehnt bzw. widerruft.

  3. Erstellen Sie eine Anfrage zum Speichern des Tokens und übergeben Sie neben anderen Konfigurationsparametern die in Schritt 1 erstellte PendingIntent.

    Kotlin

      // Create an ActivityResultLauncher which registers a callback for the
      // Activity result contract
      val activityResultLauncher = registerForActivityResult(
        ActivityResultContracts.StartIntentSenderForResult())
        { result ->
          if (result.resultCode == RESULT_OK) {
            // Successfully finished the flow and saved the token
          } else {
            // Flow failed, for example the user may have canceled the flow
          }
        }
    
      // Build token save request
      val request = SaveAccountLinkingTokenRequest.builder()
        .setTokenType(SaveAccountLinkingTokenRequest.TOKEN_TYPE_AUTH_CODE)
        .setConsentPendingIntent(consentPendingIntent)
        .setServiceId("service-id-of-and-defined-by-developer")
        //Set the scopes that the token is valid for on your platform
        .setScopes(scopes)
        .build()
    
       // Launch consent activity and retrieve token
       Identity.getCredentialSavingClient(this)
         .saveAccountLinkingToken(request)
         .addOnSuccessListener( saveAccountLinkingTokenResult -> {
            if (saveAccountLinkingTokenResult.hasResolution()) {
              val pendingIntent = saveAccountLinkingTokenResult
                                  .getPendingIntent()
              val intentSenderRequest = IntentSenderRequest
                                        .Builder(pendingIntent).build()
              activityResultLauncher.launch(intentSenderRequest)
            } else {
               // This should not happen, let’s log this
               Log.e(TAG, "Failed to save token");
            }
          })
          .addOnFailureListener(e -> Log.e(TAG, “Failed to save token”, e))
    

    Java

      // Create an ActivityResultLauncher which registers a callback for the
      // Activity result contract
      ActivityResultLauncher<IntentSenderRequest>
          activityResultLauncher =
          registerForActivityResult(new ActivityResultContracts
                                        .StartIntentSenderForResult(),
                                    result -> {
          if (result.getResultCode() == RESULT_OK) {
              // Successfully finished the flow and saved the token
          } else {
              // Flow failed, for example the user may have canceled the flow
          }
      });
    
     // Build token save request
     SaveAccountLinkingTokenRequest request =
        SaveAccountLinkingTokenRequest.builder()
            .setTokenType(
                SaveAccountLinkingTokenRequest.TOKEN_TYPE_AUTH_CODE)
            .setConsentPendingIntent(consentPendingIntent)
            .setServiceId("service-id-of-and-defined-by-developer")
            //Set the scopes that the token is valid for on your platform
            .setScopes(scopes)
            .build();
    
      // Launch consent activity and retrieve token
      Identity.getCredentialSavingClient(this)
          .saveAccountLinkingToken(request)
          .addOnSuccessListener(
              saveAccountLinkingTokenResult -> {
                if (saveAccountLinkingTokenResult.hasResolution()) {
                  // Launch the resolution intent
                  PendingIntent pendingIntent =
                      saveAccountLinkingTokenResult.getPendingIntent();
                  IntentSenderRequest intentSenderRequest =
                      new IntentSenderRequest.Builder(pendingIntent).build();
                  activityResultLauncher.launch(intentSenderRequest);
                } else {
                  // This should not happen, let’s log this
                  Log.e(TAG, "Failed to save token");
                }
              })
          .addOnFailureListener(e -> Log.e(TAG, "Failed to save token", e));
      ```
    

Mit den oben genannten Schritten wird der Nutzer um seine Einwilligung gebeten und ein Autorisierungscode an Google zurückgegeben.

Best Practices

  • Ihre App sollte dem Nutzer über eine Schaltfläche, eine Ein/Aus-Schaltfläche oder ein ähnliches visuelles Element den Verknüpfungsstatus anzeigen.

    Abbildung 1. Beispielbild für Linkstatus

  • Sie sollten den Nutzer nach einer erfolgreichen Verknüpfung benachrichtigen, indem Sie z.B. einen Toast einblenden, eine Ein/Aus-Schaltfläche zum Statuswechsel auslösen oder den Nutzer auf eine separate Seite für eine erfolgreiche Verknüpfung weiterleiten.

  • Sie sollten In-App-Nutzer auffordern, Konten zu verknüpfen, idealerweise auf der Grundlage starker Signale, von denen solche Nutzer profitieren würden.

  • Nach der erfolgreichen Verknüpfung sollten Sie Nutzern ein Beispiel dafür geben, was sie mit dem verknüpften Konto tun sollen. Wenn Sie z. B. gerade einen Musik-Streamingdienst verknüpft haben, Google Assistant bitten, Musik abzuspielen.

  • Nutzern ermöglichen, ihre verknüpften Konten zu verwalten, einschließlich der Option, die Verknüpfung der Konten aufzuheben Verweisen Sie ihn auf die Verwaltungsseite für verknüpfte Google-Konten: https://myaccount.google.com/accountlinking.

Referenz

Referenzdokumentation zur Android Auth API