Mit Mit Google anmelden können Sie die Nutzerauthentifizierung schnell in Ihre Android-App einbinden. Nutzer können sich mit ihrem Google-Konto in Ihrer App anmelden, ihre Einwilligung geben und ihre Profilinformationen sicher mit Ihrer App teilen. Die Jetpack-Bibliothek „Credential Manager“ für Android sorgt für eine reibungslose Einbindung und bietet mit einer einzigen API eine einheitliche Nutzererfahrung auf allen Android-Geräten.
In diesem Dokument erfahren Sie, wie Sie „Über Google anmelden“ in Android-Apps implementieren, die Benutzeroberfläche der Schaltfläche „Über Google anmelden“ einrichten und für Apps optimierte One Tap-Registrierungs- und Anmeldevorgänge konfigurieren. Für eine reibungslose Gerätemigration unterstützt „Über Google anmelden“ die automatische Anmeldung. Die plattformübergreifende Natur von Android, iOS und Web hilft Ihnen, den Anmeldezugriff für Ihre App auf jedem Gerät zu ermöglichen. Wenn Sie Firebase Authentication für Ihre Anwendung verwenden, finden Sie weitere Informationen zur Integration von „Mit Google anmelden“ und Credential Manager im Leitfaden zur Authentifizierung mit Google unter Android.
So richten Sie die Anmeldung mit Google ein:
„Mit Google anmelden“ als Option für die Bottom-Sheet-Benutzeroberfläche von Credential Manager konfigurieren Dies kann so konfiguriert werden, dass der Nutzer automatisch zur Anmeldung aufgefordert wird. Wenn Sie entweder Passkeys oder Passwörter implementiert haben, können Sie alle relevanten Anmeldedatentypen gleichzeitig anfordern, damit sich der Nutzer nicht daran erinnern muss, welche Option er zuvor für die Anmeldung verwendet hat.

Fügen Sie der Benutzeroberfläche Ihrer App die Schaltfläche „Über Google anmelden“ hinzu. Mit der Schaltfläche „Mit Google anmelden“ können Nutzer sich ganz einfach mit ihren bestehenden Google-Konten in Android-Apps registrieren oder anmelden. Nutzer klicken auf die Schaltfläche „Mit Google anmelden“, wenn sie die Bottom-Sheet-Benutzeroberfläche schließen oder wenn sie ihr Google-Konto explizit für die Registrierung und Anmeldung verwenden möchten. Für Entwickler bedeutet das ein einfacheres Onboarding von Nutzern und weniger Reibung bei der Registrierung.

In diesem Dokument wird beschrieben, wie Sie die Schaltfläche „Mit Google anmelden“ und das Bottom-Sheet-Dialogfeld mit der Credential Manager API mithilfe der Google ID-Hilfsbibliothek einbinden.
-Projekt einrichten
- Öffnen Sie Ihr Projekt in der oder erstellen Sie ein Projekt, falls Sie noch keines haben.
- Prüfen Sie, ob alle Informationen im vollständig und korrekt sind.
- Ihrer App muss ein korrekter App-Name, ein korrektes App-Logo und eine korrekte App-Startseite zugewiesen sein. Diese Werte werden Nutzern bei der Registrierung auf dem Einwilligungsbildschirm „Über Google anmelden“ und auf dem Bildschirm Drittanbieter-Apps und ‑Dienste angezeigt.
- Achten Sie darauf, dass Sie die URLs der Datenschutzerklärung und der Nutzungsbedingungen Ihrer App angegeben haben.
- Erstellen Sie in der eine Android-Client-ID für Ihre App, falls Sie noch keine haben. Sie müssen den Paketnamen und die SHA1-Signatur Ihrer App angeben.
- Erstellen Sie in der eine neue Client-ID für Webanwendungen, falls Sie das noch nicht getan haben. Sie können die Felder „Autorisierte JavaScript-Quellen“ und „Autorisierte Weiterleitungs-URIs“ vorerst ignorieren. Diese Client-ID wird verwendet, um Ihren Backend-Server zu identifizieren, wenn er mit den Authentifizierungsdiensten von Google kommuniziert.
Abhängigkeiten deklarieren
Deklarieren Sie in der build.gradle-Datei Ihres Moduls Abhängigkeiten mit der neuesten Version des Credential Manager:
dependencies {
// ... other dependencies
implementation "androidx.credentials:credentials:<latest version>"
implementation "androidx.credentials:credentials-play-services-auth:<latest version>"
implementation "com.google.android.libraries.identity.googleid:googleid:<latest version>"
}
Google Log-in-Anfrage instanziieren
Instanziieren Sie eine Google-Anmeldeanfrage, um mit der Implementierung zu beginnen. Rufen Sie mit GetGoogleIdOption
das Google-ID-Token eines Nutzers ab.
val googleIdOption: GetGoogleIdOption = GetGoogleIdOption.Builder()
.setFilterByAuthorizedAccounts(true)
.setServerClientId(WEB_CLIENT_ID)
.setAutoSelectEnabled(true)
// nonce string to use when generating a Google ID token
.setNonce(nonce)
.build()
Prüfen Sie zuerst, ob der Nutzer Konten hat, die zuvor für die Anmeldung in Ihrer App verwendet wurden. Rufen Sie dazu die API auf und legen Sie den Parameter setFilterByAuthorizedAccounts
auf true
fest. Nutzer können zwischen verfügbaren Konten wählen, um sich anzumelden.
Wenn keine autorisierten Google-Konten verfügbar sind, sollte der Nutzer aufgefordert werden, sich mit einem seiner verfügbaren Konten zu registrieren. Dazu rufen Sie die API noch einmal auf und legen setFilterByAuthorizedAccounts
auf false
fest.
Weitere Informationen zur Registrierung
Automatische Anmeldung für wiederkehrende Nutzer aktivieren (empfohlen)
Entwickler sollten die automatische Anmeldung für Nutzer aktivieren, die sich mit ihrem einzigen Konto registrieren. Das sorgt für eine nahtlose Nutzung auf verschiedenen Geräten, insbesondere bei der Migration von Geräten, wenn Nutzer schnell wieder Zugriff auf ihr Konto erhalten können, ohne Anmeldedaten noch einmal eingeben zu müssen. Für Ihre Nutzer wird dadurch unnötiger Aufwand vermieden, wenn sie bereits angemeldet waren.
Verwenden Sie setAutoSelectEnabled(true)
, um die automatische Anmeldung zu aktivieren. Die automatische Anmeldung ist nur möglich, wenn die folgenden Kriterien erfüllt sind:
- Es gibt nur ein Anmeldedatenpaar, das der Anfrage entspricht. Das kann ein Google-Konto oder ein Passwort sein. Dieses Anmeldedatenpaar entspricht dem Standardkonto auf dem Android-Gerät.
- Der Nutzer hat sich nicht explizit abgemeldet.
- Der Nutzer hat die automatische Anmeldung nicht in den Einstellungen seines Google-Kontos deaktiviert.
val googleIdOption: GetGoogleIdOption = GetGoogleIdOption.Builder()
.setFilterByAuthorizedAccounts(true)
.setServerClientId(WEB_CLIENT_ID)
.setAutoSelectEnabled(true)
// nonce string to use when generating a Google ID token
.setNonce(nonce)
.build()
Denken Sie daran, die Abmeldung richtig zu verarbeiten, wenn Sie die automatische Anmeldung implementieren, damit Nutzer immer das richtige Konto auswählen können, nachdem sie sich explizit von Ihrer App abgemeldet haben.
Nonce festlegen, um die Sicherheit zu verbessern
Um die Sicherheit bei der Anmeldung zu verbessern und Replay-Angriffe zu vermeiden, fügen Sie setNonce
hinzu, damit jede Anfrage einen Nonce enthält. Weitere Informationen zum Generieren einer Nonce
val googleIdOption: GetGoogleIdOption = GetGoogleIdOption.Builder()
.setFilterByAuthorizedAccounts(true)
.setServerClientId(WEB_CLIENT_ID)
.setAutoSelectEnabled(true)
// nonce string to use when generating a Google ID token
.setNonce(nonce)
.build()
Ablauf „Über Google anmelden“ erstellen
So richten Sie den „Über Google anmelden“-Vorgang ein:
- Instanziieren Sie ein
GetCredentialRequest
und fügen Sie dann das zuvor erstelltegoogleIdOption
hinzu. Verwenden Sie dazuaddCredentialOption()
, um die Anmeldedaten abzurufen. - Leiten Sie diese Anfrage an den Aufruf
getCredential()
(Kotlin) odergetCredentialAsync()
(Java) weiter, um die verfügbaren Anmeldedaten des Nutzers abzurufen. - Wenn die API erfolgreich ausgeführt wurde, extrahieren Sie
CustomCredential
, das das Ergebnis fürGoogleIdTokenCredential
-Daten enthält. - Der Typ für
CustomCredential
sollte dem Wert vonGoogleIdTokenCredential.TYPE_GOOGLE_ID_TOKEN_CREDENTIAL
entsprechen. Wandeln Sie das Objekt mit der MethodeGoogleIdTokenCredential.createFrom
in einGoogleIdTokenCredential
um. Wenn die Konvertierung erfolgreich ist, extrahieren Sie die
GoogleIdTokenCredential
-ID, validieren Sie und authentifizieren Sie die Anmeldedaten auf Ihrem Server.Wenn die Konvertierung mit
GoogleIdTokenParsingException
fehlschlägt, müssen Sie möglicherweise die Version Ihrer Über Google anmelden-Bibliothek aktualisieren.Alle nicht erkannten benutzerdefinierten Anmeldedatentypen abfangen.
val request: GetCredentialRequest = GetCredentialRequest.Builder()
.addCredentialOption(googleIdOption)
.build()
coroutineScope {
try {
val result = credentialManager.getCredential(
request = request,
context = activityContext,
)
handleSignIn(result)
} catch (e: GetCredentialException) {
// Handle failure
}
}
fun handleSignIn(result: GetCredentialResponse) {
// Handle the successfully returned credential.
val credential = result.credential
val responseJson: String
when (credential) {
// Passkey credential
is PublicKeyCredential -> {
// Share responseJson such as a GetCredentialResponse to your server to validate and
// authenticate
responseJson = credential.authenticationResponseJson
}
// Password credential
is PasswordCredential -> {
// Send ID and password to your server to validate and authenticate.
val username = credential.id
val password = credential.password
}
// GoogleIdToken credential
is CustomCredential -> {
if (credential.type == GoogleIdTokenCredential.TYPE_GOOGLE_ID_TOKEN_CREDENTIAL) {
try {
// Use googleIdTokenCredential and extract the ID to validate and
// authenticate on your server.
val googleIdTokenCredential = GoogleIdTokenCredential
.createFrom(credential.data)
// You can use the members of googleIdTokenCredential directly for UX
// purposes, but don't use them to store or control access to user
// data. For that you first need to validate the token:
// pass googleIdTokenCredential.getIdToken() to the backend server.
// see [validation instructions](https://developers.google.com/identity/gsi/web/guides/verify-google-id-token)
} catch (e: GoogleIdTokenParsingException) {
Log.e(TAG, "Received an invalid google id token response", e)
}
} else {
// Catch any unrecognized custom credential type here.
Log.e(TAG, "Unexpected type of credential")
}
}
else -> {
// Catch any unrecognized credential type here.
Log.e(TAG, "Unexpected type of credential")
}
}
}
Ablauf für die Schaltfläche „Über Google anmelden“ auslösen
Wenn Sie den Ablauf für die Schaltfläche „Über Google anmelden“ auslösen möchten, verwenden Sie GetSignInWithGoogleOption
anstelle von GetGoogleIdOption
:
val signInWithGoogleOption: GetSignInWithGoogleOption = GetSignInWithGoogleOption.Builder(
serverClientId = WEB_CLIENT_ID
).setNonce(nonce)
.build()
Verarbeiten Sie das zurückgegebene GoogleIdTokenCredential
wie im folgenden Codebeispiel beschrieben.
fun handleSignInWithGoogleOption(result: GetCredentialResponse) {
// Handle the successfully returned credential.
val credential = result.credential
when (credential) {
is CustomCredential -> {
if (credential.type == GoogleIdTokenCredential.TYPE_GOOGLE_ID_TOKEN_CREDENTIAL) {
try {
// Use googleIdTokenCredential and extract id to validate and
// authenticate on your server.
val googleIdTokenCredential = GoogleIdTokenCredential
.createFrom(credential.data)
} catch (e: GoogleIdTokenParsingException) {
Log.e(TAG, "Received an invalid google id token response", e)
}
}
else {
// Catch any unrecognized credential type here.
Log.e(TAG, "Unexpected type of credential")
}
}
else -> {
// Catch any unrecognized credential type here.
Log.e(TAG, "Unexpected type of credential")
}
}
}
Sobald Sie die Google-Anmeldeanfrage instanziiert haben, starten Sie den Authentifizierungsvorgang auf ähnliche Weise wie im Abschnitt Über Google anmelden beschrieben.
Registrierung für neue Nutzer aktivieren (empfohlen)
Mit „Über Google anmelden“ können Nutzer mit nur wenigen Tippvorgängen ganz einfach ein neues Konto für Ihre App oder Ihren Dienst erstellen.
Wenn keine gespeicherten Anmeldedaten gefunden werden (keine Google-Konten von getGoogleIdOption
zurückgegeben werden), fordern Sie den Nutzer auf, sich zu registrieren. Prüfe zuerst, ob setFilterByAuthorizedAccounts(true)
, um zu sehen, ob bereits verwendete Konten vorhanden sind. Wenn keine gefunden werden, fordern Sie den Nutzer auf, sich mit seinem Google-Konto zu registrieren. Verwenden Sie dazu setFilterByAuthorizedAccounts(false)
.
Beispiel:
val googleIdOption: GetGoogleIdOption = GetGoogleIdOption.Builder()
.setFilterByAuthorizedAccounts(false)
.setServerClientId(WEB_CLIENT_ID)
.build()
Nachdem Sie die Google-Registrierungsanfrage instanziiert haben, starten Sie den Authentifizierungsvorgang. Wenn Nutzer sich nicht über „Über Google anmelden“ registrieren möchten, sollten Sie Ihre App für die automatische Vervollständigung optimieren. Nachdem der Nutzer ein Konto erstellt hat, sollten Sie ihn als letzten Schritt der Kontoerstellung für Passkeys registrieren.
Abmeldung verarbeiten
Wenn sich ein Nutzer von Ihrer App abmeldet, rufen Sie die API-Methode clearCredentialState()
auf, um den aktuellen Anmeldedatenstatus des Nutzers bei allen Anmeldedatenanbietern zu löschen.
Dadurch werden alle Anmeldedatenanbieter benachrichtigt, dass alle gespeicherten Anmeldedatensitzungen für die angegebene App gelöscht werden sollen.
Ein Anmeldedatenanbieter hat möglicherweise eine aktive Anmeldedatensitzung gespeichert und verwendet sie, um die Anmeldeoptionen für zukünftige „get-credential“-Aufrufe einzuschränken. So kann beispielsweise der aktive Berechtigungsnachweis gegenüber allen anderen verfügbaren Berechtigungsnachweisen priorisiert werden. Wenn sich Ihr Nutzer explizit von Ihrer App abmeldet und Sie beim nächsten Mal die ganzheitlichen Anmeldeoptionen erhalten möchten, sollten Sie diese API aufrufen, damit der Anbieter alle gespeicherten Anmeldedatensitzungen löschen kann.