Fehler 10 und 28444 bei Google Sign-In beheben: Developer console is not set up correctly
ApiException: 10 aus dem alten SDK für Google Sign-In und [28444] Developer console is not set up correctly aus dem Credential Manager sind dasselbe Konfigurationsproblem. Die App, die die Anmeldung anfordert (ihr Paketname und der SHA-1-Fingerabdruck des Zertifikats, mit dem dieser Build signiert wurde), oder die Webclient-ID, die sie übergeben hat, stimmt nicht mit dem überein, was im Projekt registriert ist. Zu korrigieren ist die Registrierung, nicht der Code. Prüfen Sie zuerst, ob der SHA-1-Fingerabdruck des Schlüssels, mit dem der laufende Build signiert wurde, in Firebase eingetragen ist.
Kurz gesagt
- Derselbe Fehler unter anderem Namen. 10 ist der
DEVELOPER_ERRORdes alten SDK, 28444 die gleichbedeutende Meldung, die der Credential Manager zurückgibt. Ursache ist der Paketname, der SHA-1-Fingerabdruck der Signatur oder die Webclient-ID. Fehler unterscheiden - Registrieren Sie den SHA-1-Fingerabdruck des Schlüssels, der den laufenden Build signiert hat. Debug-Schlüssel, Uploadschlüssel und der App-Signaturschlüssel von Google Play sind alle verschieden. SHA-1 je Build
- In
serverClientIdgehört die Webclient-ID. Nicht die Android-Client-ID. Was hineingehört - Das alte SDK wurde im August 2026 entfernt. Beim Credential Manager kann derselbe Konfigurationsfehler auch wie ein Abbruch durch den Nutzer aussehen. Umstieg
Die Fehler unterscheiden
| Fehler | Wo | Bedeutung |
|---|---|---|
ApiException: 10 | Das alte Google Sign-In for Android | DEVELOPER_ERROR. Die App ist falsch konfiguriert. |
[28444] Developer console is not set up correctly. | Credential Manager. In Flutters google_sign_in 7: GoogleSignInExceptionCode.unknownError | Der Code ist nicht dokumentiert. Wie die Meldung sagt, passt die OAuth-Konfiguration nicht zur App. |
| Abgebrochen, ohne dass der Nutzer abgebrochen hat | Credential Manager (GetCredentialCancellationException, in Flutter canceled) | Konfigurationsfehler werden manchmal als Abbruch gemeldet. |
ApiException: 12500 | Das alte Google Sign-In for Android | Laut Firebase-Dokumentation fehlt die Support-E-Mail-Adresse oder ein SHA-Schlüssel. |
NoCredentialException | Credential Manager | Kein Konfigurationsproblem. Auf dem Gerät ist kein Google-Konto vorhanden, oder die Anfrage ist so eingestellt, dass sie nur Konten anbietet, die sich schon einmal in dieser App angemeldet haben (siehe unten). |
Die ersten drei haben dieselben Ursachen. Die Dokumentation des Flutter-Plug-ins (google_sign_in_android) nennt als häufige Ursachen von Konfigurationsfehlern einen fehlenden oder falschen SHA-Fingerabdruck der Signatur eines Builds, einen falschen Paketnamen auf der Serverseite und eine fehlende oder falsche serverClientId. Prüfen Sie sie in dieser Reihenfolge.
Der SHA-1-Fingerabdruck des Schlüssels, der diesen Build signiert hat
Google erkennt die App, die die Anmeldung anfordert, an ihrem Paketnamen und am SHA-1-Fingerabdruck des Zertifikats, mit dem das APK signiert wurde. Der Paketname ist die applicationId in build.gradle (samt dem Suffix, das ein Build-Typ anhängt) und muss mit dem der in Firebase registrierten Android-App übereinstimmen. Die Signatur hängt davon ab, wie die App installiert wurde.
| Installierter Build | Signiert mit | SHA-1 ermitteln |
|---|---|---|
| Debug-Build, aus Android Studio gestartet | Der Debug-Keystore dieses Computers (auf jedem Computer anders) | Der Eintrag „debug“ in signingReport |
| Release-Build, selbst signiert und installiert | Ihr Uploadschlüssel (Release-Schlüssel) | Der Eintrag „release“ in signingReport |
| Aus Google Play installierte App (jeder Track) | Der App-Signaturschlüssel, den Google verwaltet | Die Seite „Play App-Signatur verwalten“ (Manage Play app signing) in der Play Console |
| Über die interne App-Freigabe (Internal app sharing) installierte App | Das interne Testzertifikat von Play | „Internes Testzertifikat“ (Internal test certificate) auf der Seite „Interne App-Freigabe“ der Play Console |
# Every build variant's signing key, from the project root
./gradlew signingReport
# The debug keystore (password: android)
keytool -list -v -alias androiddebugkey -keystore ~/.android/debug.keystore
# The certificate that signed an APK or AAB you already have
keytool -printcert -jarfile app-release.aabFügen Sie den gefundenen SHA-1-Fingerabdruck in der Firebase Console unter Projekteinstellungen (Project settings) > Allgemein (General) > Meine Apps (Your apps) bei der Android-App unter SHA-Zertifikat-Fingerabdrücke (SHA certificate fingerprints) hinzu, laden Sie google-services.json neu herunter und ersetzen Sie damit Ihre Datei. Firebase legt für diesen Fingerabdruck den Android-OAuth-Client an. Registrieren Sie alle Schlüssel, die Sie verwenden, dann funktioniert die Anmeldung, egal wie die App installiert wurde.
- Funktioniert die Anmeldung, wenn Sie selbst installieren, aber nicht über Play, fehlt der App-Signaturschlüssel. Play signiert die App neu, und zwar mit dem App-Signaturschlüssel, den Google verwaltet, nicht mit Ihrem Uploadschlüssel.
- Neue Apps signiert Play standardmäßig mit drei Schlüsseln (quantenresistente Signatur). Die Play Console-Hilfe fordert Sie dann auf, alle drei Fingerabdrücke bei Ihren API-Anbietern zu registrieren.
- Ein Paar aus Paketname und SHA-1 lässt sich über alle Firebase- und Google Cloud-Projekte hinweg nur in einem einzigen Projekt registrieren. Wenn Sie getrennte Projekte für Entwicklung und Produktion nutzen, geben Sie jedem Build einen eigenen Paketnamen.
In serverClientId gehört die Webclient-ID
In serverClientId gehört die OAuth-Client-ID der Webanwendung aus Ihrem Google Cloud-Projekt. Sie dient als Zielgruppe (Audience) der Google-ID-Tokens, deshalb hat die Android-Client-ID dort nichts zu suchen. In einem Firebase-Projekt ist das der Eintrag mit client_type 3 in google-services.json, aus dem das google-services-Plug-in R.string.default_web_client_id erzeugt.
// Android (Kotlin): the Sign in with Google button
val buttonOption = GetSignInWithGoogleOption.Builder(
serverClientId = getString(R.string.default_web_client_id),
).build()
// Android (Kotlin): the bottom sheet, offering every account on the device
val sheetOption = GetGoogleIdOption.Builder()
.setServerClientId(getString(R.string.default_web_client_id))
.setFilterByAuthorizedAccounts(false)
.build()
// Flutter (google_sign_in 7), without google-services.json
await GoogleSignIn.instance.initialize(
serverClientId: 'YOUR_WEB_CLIENT_ID.apps.googleusercontent.com',
);- Flutters
google_sign_in7 liest diesen Wert auch ohneserverClientId, wenngoogle-services.jsoneinen Webclient-Eintrag enthält. Fehlt er, fügen Sie dem Firebase-Projekt eine Web-App hinzu und laden Sie die Datei neu herunter. Unter Android wirdclientIdnicht verwendet. - Ist 28444 erst nach dem Update von 6.x auf 7 aufgetreten, steht
serverClientIdunter Verdacht. Das Flutter-Team erklärt, dass das alte SDK, das 6.x nutzte, diesen Wert nicht immer geprüft hat; ein falscher Wert kann deshalb funktioniert haben (flutter/flutter #174319).
Vom alten SDK zum Credential Manager wechseln
Die APIs des alten Google Sign-In for Android wurden mit play-services-auth 22.0.0 (26. August 2026) entfernt. Ab dieser Version lässt sich Anmeldecode, der auf GoogleSignInClient aufbaut, nicht mehr kompilieren. Wechseln Sie deshalb zum Credential Manager.
| Altes SDK | Credential Manager |
|---|---|
Der Anmeldebildschirm von GoogleSignInClient | GetSignInWithGoogleOption (Schaltfläche) oder GetGoogleIdOption (Ansicht am unteren Rand) |
silentSignIn() | GetGoogleIdOption mit setFilterByAuthorizedAccounts(true) und setAutoSelectEnabled(true) |
requestIdToken(webClientId) | Dieselbe Webclient-ID in serverClientId |
signOut() | clearCredentialState() |
ApiException: 10 | [28444] Developer console is not set up correctly oder ein Abbruch |
setFilterByAuthorizedAccountsist standardmäßigtrue. Nutzer, die sich noch nie in dieser App angemeldet haben, erhalten eineNoCredentialException. Setzen Sie den Wert für Registrierung und erste Anmeldung deshalb auffalseoder verwenden Sie den Ablauf mit der Schaltfläche.- Melden Sie sich im Emulator bei einem Google-Konto an. Verwenden Sie ein System-Image mit Google APIs. Ohne Konto auf dem Gerät erhalten Sie eine
NoCredentialException.
Quellen
- CommonStatusCodes.DEVELOPER_ERROR, Versionshinweise zu den Google Play-Diensten: Bedeutung von 10, Entfernung der Google Sign-In-APIs
- Vom alten Google Sign-In migrieren, Sign in with Google mit Credential Manager implementieren, Fehlerbehebung für Credential Manager
- Mit Google auf Android authentifizieren (Firebase), FAQ zur Fehlerbehebung für Firebase unter Android, das google-services-Plug-in, SHA-Fingerabdrücke und OAuth-Clients (Firebase-Hilfe)
- OAuth-Clients (Google Cloud-Hilfe), SHA-1 ermitteln, Play App-Signatur, interne App-Freigabe
- google_sign_in_android, flutter/flutter #174319 (Meldung zu 28444), Codelab zu Sign in with Google
