FirexportBlog

Corrigez les erreurs 10 et 28444 de Google Sign-In : Developer console is not set up correctly

ApiException: 10 de l’ancien SDK Google Sign-In et [28444] Developer console is not set up correctly de Credential Manager sont le même problème de configuration. L’application qui demande la connexion (son nom de package et le SHA-1 du certificat qui a signé ce build) ou l’ID client Web qu’elle a transmis ne correspond pas à ce qui est enregistré dans le projet. C’est l’enregistrement qu’il faut corriger, pas le code. Commencez par vérifier que le SHA-1 de la clé qui a signé le build que vous exécutez figure dans Firebase.

En bref

  • Même erreur, autre nom. 10 est le DEVELOPER_ERROR de l’ancien SDK ; 28444 est le message de même sens que renvoie Credential Manager. La cause est le nom de package, le SHA-1 de signature ou l’ID client Web. Distinguer les erreurs
  • Enregistrez le SHA-1 de la clé qui a signé le build en cours d’exécution. La clé de débogage, la clé d’importation et la clé de signature d’application de Google Play sont toutes différentes. Le SHA-1 de chaque build
  • serverClientId attend l’ID client Web. Pas l’ID client Android. La valeur à passer
  • L’ancien SDK a été supprimé en août 2026. Avec Credential Manager, la même erreur de configuration peut aussi ressembler à une annulation par l’utilisateur. Migrer

Distinguer les erreurs

ErreurOùSignification
ApiException: 10L’ancien Google Sign-In for AndroidDEVELOPER_ERROR. L’application est mal configurée.
[28444] Developer console is not set up correctly.Credential Manager. Dans google_sign_in 7 de Flutter, GoogleSignInExceptionCode.unknownErrorCode non documenté. Comme le dit le message, la configuration OAuth ne correspond pas à l’application.
Annulé sans que l’utilisateur ait annuléCredential Manager (GetCredentialCancellationException, canceled dans Flutter)Des erreurs de configuration sont parfois signalées comme une annulation.
ApiException: 12500L’ancien Google Sign-In for AndroidSelon la documentation Firebase, l’adresse e-mail d’assistance n’est pas renseignée ou une clé SHA manque.
NoCredentialExceptionCredential ManagerCe n’est pas un problème de configuration. L’appareil n’a pas de compte Google, ou la requête est configurée pour ne proposer que les comptes déjà connectés à l’application (voir plus bas).

Les trois premières ont les mêmes causes. La documentation du plug-in Flutter (google_sign_in_android) cite comme causes fréquentes des erreurs de configuration un SHA de signature manquant ou incorrect pour un build, un nom de package incorrect côté serveur et un serverClientId manquant ou incorrect. Vérifiez-les dans cet ordre.

Le SHA-1 de la clé qui a signé ce build

Google reconnaît l’application qui demande la connexion à son nom de package et au SHA-1 du certificat qui a signé l’APK. Le nom de package est l’applicationId de build.gradle (avec le suffixe qu’ajoute le type de compilation, le cas échéant), et il doit être identique à celui de l’application Android enregistrée dans Firebase. La signature dépend de la façon dont l’application a été installée.

Build installéSigné avecOù trouver le SHA-1
Build de débogage lancé depuis Android StudioLe keystore de débogage de cet ordinateur (différent sur chaque ordinateur)L’entrée debug de signingReport
Build de release que vous avez signé et installé vous-mêmeVotre clé d’importation (de release)L’entrée release de signingReport
Application installée depuis Google Play (tous les canaux)La clé de signature d’application détenue par GoogleLa page Gérer la signature d’application Play (Manage Play app signing) de la Play Console
Application installée via le Partage interne d’application (Internal app sharing)Le certificat de test interne de PlayCertificat de test interne (Internal test certificate), sur la page Partage interne d’application de la 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.aab

Ajoutez le SHA-1 trouvé au champ Empreintes de certificat SHA (SHA certificate fingerprints) de l’application Android, dans Paramètres du projet (Project settings) > Général (General) > Vos applications (Your apps) de la console Firebase, puis téléchargez à nouveau google-services.json pour remplacer le vôtre. Firebase crée le client OAuth Android pour cette empreinte. Enregistrez toutes les clés que vous utilisez : la connexion fonctionnera quelle que soit la façon dont l’application a été installée.

  • Si l’application fonctionne quand vous l’installez vous-même, mais pas depuis Play, il manque la clé de signature d’application. Play signe à nouveau l’application avec la clé de signature d’application détenue par Google, et non avec votre clé d’importation.
  • Les nouvelles applications sont signées par défaut par Play avec trois clés (signature prête pour l’informatique quantique). L’aide de la Play Console vous demande alors d’enregistrer les trois empreintes auprès de vos fournisseurs d’API.
  • Une même paire nom de package et SHA-1 ne peut être enregistrée que dans un seul projet, tous projets Firebase et Google Cloud confondus. Si vous séparez projets de développement et de production, donnez à chaque build son propre nom de package.

serverClientId attend l’ID client Web

serverClientId attend l’ID client OAuth de l’application Web de votre projet Google Cloud. C’est la valeur utilisée comme destinataire (audience) des jetons d’ID Google : l’ID client Android n’a donc rien à y faire. Dans un projet Firebase, c’est l’entrée de google-services.json dont le client_type vaut 3, que le plug-in google-services transforme en R.string.default_web_client_id.

// 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',
);
  • google_sign_in 7 de Flutter lit cette valeur sans serverClientId quand google-services.json contient une entrée de client Web. Sinon, ajoutez une application Web au projet Firebase et téléchargez à nouveau le fichier. Sur Android, clientId n’est pas utilisé.
  • Si 28444 est apparu pour la première fois après le passage de 6.x à 7, soupçonnez serverClientId. L’équipe Flutter explique que l’ancien SDK qu’utilisait 6.x ne validait pas toujours cette valeur, si bien qu’une valeur erronée a pu fonctionner (flutter/flutter #174319).

Passer de l’ancien SDK à Credential Manager

Les API de l’ancien Google Sign-In for Android ont été supprimées dans play-services-auth 22.0.0 (26 août 2026). À partir de cette version, le code de connexion écrit avec GoogleSignInClient ne compile plus : passez à Credential Manager.

Ancien SDKCredential Manager
L’écran de connexion de GoogleSignInClientGetSignInWithGoogleOption (bouton) ou GetGoogleIdOption (bottom sheet)
silentSignIn()GetGoogleIdOption avec setFilterByAuthorizedAccounts(true) et setAutoSelectEnabled(true)
requestIdToken(webClientId)Le même ID client Web dans serverClientId
signOut()clearCredentialState()
ApiException: 10[28444] Developer console is not set up correctly ou une annulation
  • setFilterByAuthorizedAccounts vaut true par défaut. Les utilisateurs qui ne se sont jamais connectés à l’application obtiennent une NoCredentialException ; pour l’inscription et la première connexion, passez-le à false ou utilisez le flux du bouton.
  • Sur un émulateur, connectez-vous à un compte Google. Utilisez une image système avec Google APIs. Sans compte sur l’appareil, vous obtenez une NoCredentialException.

Sources

Tous les articles →