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
So verknüpfen Sie Ihre Plattform:
- Der Nutzer klickt in Ihrer App auf einen Verknüpfungstrigger oder schaltet ihn ein / aus.
- Der Nutzer wählt das Google-Konto aus, das er verknüpfen möchte.
- Der Nutzer wählt ein vorhandenes Google-Konto auf dem Gerät aus, das verknüpft werden soll, oder meldet sich mit einem neuen Konto an.
- Dem Nutzer werden von Google gehostete Einwilligungsbildschirme angezeigt. Er muss zustimmen, um fortzufahren, oder den Vorgang abbrechen.
- Der Nutzer wird auf den Zustimmungsbildschirm weitergeleitet und muss zustimmen, um fortzufahren, oder abbrechen, um die Verknüpfung zu beenden.
- Die Verknüpfung wird zwischen dem Konto des Nutzers in Ihrem Dienst und seinem Google-Konto hergestellt.

Abbildung 1. Über den Plattformfluss verknüpfen
Voraussetzungen
Wenn Sie „Verknüpfen“ auf Ihrer Plattform implementieren möchten, benötigen Sie Folgendes:
- Eine Android-App.
- Einen OAuth 2.0-Server verwalten und betreiben, der den OAuth 2.0-Vorgang mit Autorisierungscode unterstützt.
Einrichtung
Bevor Sie mit den folgenden Schritten fortfahren, müssen Sie die Registrierung für die Kontoverknüpfung abgeschlossen haben.
Entwicklungsumgebung einrichten
So rufen Sie die neuesten Google Play-Dienste auf Ihrem Entwicklungshost ab:
- Öffnen Sie den Android SDK Manager.
Suchen Sie unter SDK-Tools nach Google Play-Dienste.
Wenn der Status dieser Pakete nicht „Installiert“ lautet, wählen Sie beide aus und klicken Sie auf Pakete installieren.
Eigene App konfigurieren
Fügen Sie in der Datei
build.gradle
auf Projektebene das Maven-Repository von Google in die Abschnittebuildscript
undallprojects
ein.buildscript { repositories { google() } } allprojects { repositories { google() } }
Fügen Sie der Gradle-Datei Ihres Moduls auf Anwendungsebene, in der Regel
app/build.gradle
, die Abhängigkeiten für die „Link with Google“ API hinzu:dependencies { implementation 'com.google.android.gms:play-services-auth:21.3.0' }
Unterstützung für Google Link auf deiner Plattform hinzufügen
Durch die Verknüpfung über deinen Plattformablauf wird ein von deinem Dienst bereitgestelltes Zugriffstoken von Google gespeichert. Die Einwilligung muss vorliegen, bevor das Token für den Nutzer zurückgegeben wird.
Folgen Sie der Anleitung unten, um die Einwilligung des Nutzers einzuholen und ein Autorisierungscode-Token über das Google Play-Dienste SDK zurückzugeben.
Erstellen Sie einen PendingIntent, mit dem die Einwilligung gestartet werden kann. Die Einwilligung wird von der Play-Dienste API gestartet. Du musst beim Aufruf der API einen
PendingIntent
angeben, der zugunsten der Übersichtlichkeit alsconsentPendingIntent
bezeichnet wird.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();
Entsprechende Aktivität zum Verarbeiten des Einwilligungs-Intents 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()
undonConsentRejectedOrCanceled()
aufgerufen werden, wenn der Nutzer Ihre Einwilligung akzeptiert oder ablehnt bzw. widerruft.Erstelle eine Anfrage zum Speichern des Tokens und übergebe unter anderem den in Schritt 1 oben erstellten
PendingIntent
-Parameter.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)); ```
Bei den oben genannten Schritten wird der Nutzer zur Einwilligung aufgefordert und es wird ein Autorisierungscode an Google zurückgegeben.
Best Practices
Ihre App sollte den Linkstatus dem Nutzer über eine Schaltfläche, einen Schalter oder ein ähnliches visuelles Element anzeigen.
Abbildung 1. Beispielbild für den Verknüpfungsstatus
Sie sollten den Nutzer nach einer erfolgreichen Verknüpfung benachrichtigen, z.B. durch ein Toast-Fenster, eine Änderung des Schalterstatus oder eine Weiterleitung zu einer separaten Seite für erfolgreiche Verknüpfungen.
Sie sollten Nutzer in Ihrer App auffordern, Konten zu verknüpfen. Idealerweise sollten Sie dabei auf starke Signale achten, dass die Verknüpfung für die Nutzer von Vorteil wäre.
Nach der erfolgreichen Verknüpfung sollten Sie den Nutzern ein Beispiel dafür geben, was sie mit dem verknüpften Konto tun können. Wenn Sie beispielsweise gerade einen Musik-Streamingdienst verknüpft haben, bitten Sie Google Assistant, Musik abzuspielen.
Nutzern die Verwaltung ihrer verknüpften Konten ermöglichen, einschließlich der Option, die Verknüpfung aufzuheben. Weisen Sie sie auf die Seite zum Verwalten verknüpfter Google-Konten hin: https://myaccount.google.com/accountlinking.