Corrija os erros 10 e 28444 do Google Sign-In: Developer console is not set up correctly
O erro ApiException: 10 do antigo SDK do Google Sign-In e o [28444] Developer console is not set up correctly do Credential Manager são o mesmo problema de configuração. Eles indicam que o app que pede o login (o nome do pacote e o SHA-1 do certificado que assinou este build) ou o ID do cliente da Web que ele passou não corresponde ao que está registrado no projeto. O que se corrige é o registro, não o código. Comece verificando se o SHA-1 da chave que assinou o build que você está executando está no Firebase.
Em resumo
- É o mesmo erro com outro nome. 10 é o
DEVELOPER_ERRORdo SDK antigo, e 28444 é a mensagem de mesmo significado que o Credential Manager retorna. A causa está no nome do pacote, no SHA-1 de assinatura ou no ID do cliente da Web. Diferenciar os erros - Registre o SHA-1 da chave que assinou o build em execução. A chave de depuração, a chave de upload e a chave de assinatura do app do Google Play são todas diferentes. SHA-1 por build
- No
serverClientIdvai o ID do cliente da Web. Não o ID do cliente Android. O que colocar - O SDK antigo foi removido em agosto de 2026. No Credential Manager, o mesmo erro de configuração também pode parecer um cancelamento feito pelo usuário. Ao migrar
Como diferenciar os erros
| Erro | Onde aparece | O que significa |
|---|---|---|
ApiException: 10 | O antigo Google Sign-In for Android | DEVELOPER_ERROR. O app está configurado incorretamente. |
[28444] Developer console is not set up correctly. | Credential Manager. No google_sign_in 7 do Flutter, GoogleSignInExceptionCode.unknownError | Código não documentado. Como diz a mensagem, a configuração do OAuth não corresponde ao app. |
| Cancelado sem o usuário cancelar | Credential Manager (GetCredentialCancellationException, canceled no Flutter) | Às vezes, erros de configuração são informados como cancelamento. |
ApiException: 12500 | O antigo Google Sign-In for Android | Segundo a documentação do Firebase, o e-mail de suporte não foi informado ou está faltando uma chave SHA. |
NoCredentialException | Credential Manager | Não é um problema de configuração. O dispositivo não tem uma Conta do Google, ou a solicitação está configurada para mostrar só as contas que já fizeram login neste app (veja abaixo). |
Os três primeiros têm as mesmas causas. A documentação do plug-in do Flutter (google_sign_in_android) aponta como causas comuns de erros de configuração um SHA de assinatura ausente ou incorreto em algum build, um nome de pacote incorreto no lado do servidor e um serverClientId ausente ou incorreto. Verifique nessa ordem.
O SHA-1 da chave que assinou este build
O Google reconhece o app que pede o login pelo nome do pacote e pelo SHA-1 do certificado que assinou o APK. O nome do pacote é o applicationId do build.gradle (incluindo o sufixo que o tipo de build acrescenta), e ele precisa ser igual ao do app Android registrado no Firebase. A assinatura depende de como o app foi instalado.
| Build instalado | Assinado com | Onde ver o SHA-1 |
|---|---|---|
| Build de depuração executado pelo Android Studio | O keystore de depuração deste computador (muda de um computador para outro) | A entrada debug do signingReport |
| Build de lançamento que você mesmo assinou e instalou | Sua chave de upload (de lançamento) | A entrada release do signingReport |
| App instalado pelo Google Play (qualquer faixa) | A chave de assinatura do app mantida pelo Google | A página Gerenciar a Assinatura de apps do Google Play (Manage Play app signing) do Play Console |
| App instalado pelo Compartilhamento interno de apps (Internal app sharing) | O certificado de teste interno do Google Play | Certificado de teste interno (Internal test certificate), na página Compartilhamento interno de apps do 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.aabAdicione o SHA-1 encontrado às impressões digitais do certificado SHA (SHA certificate fingerprints) do app Android em Configurações do projeto (Project settings) > Geral (General) > Seus apps (Your apps), no console do Firebase, e baixe o google-services.json de novo para substituir o seu. O Firebase cria o cliente OAuth do Android para essa impressão digital. Se você registrar todas as chaves que usa, o login funciona seja qual for a forma de instalação do app.
- Se funciona quando você instala direto, mas falha quando o app vem do Google Play, falta a chave de assinatura do app. O Google Play assina o app de novo com a chave de assinatura do app mantida pelo Google, não com a sua chave de upload.
- Apps novos são assinados por padrão pelo Google Play com três chaves (assinatura protegida contra ataques quânticos). Nesse caso, a Ajuda do Play Console orienta a registrar as três impressões digitais nos provedores de API.
- Um par de nome do pacote e SHA-1 só pode ser registrado em um projeto, considerando todos os projetos do Firebase e do Google Cloud. Se você usa projetos separados para desenvolvimento e produção, dê a cada build um nome de pacote próprio.
No serverClientId vai o ID do cliente da Web
O serverClientId recebe o ID do cliente OAuth do aplicativo da Web no seu projeto do Google Cloud. É o valor usado como público-alvo (audience) dos tokens de ID do Google, por isso o ID do cliente Android não serve. Num projeto do Firebase, é a entrada com client_type 3 no google-services.json, que o plug-in google-services transforma em 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',
);- O
google_sign_in7 do Flutter lê esse valor mesmo semserverClientIdquando ogoogle-services.jsontem uma entrada de cliente da Web. Se não tiver, adicione um app da Web ao projeto do Firebase e baixe o arquivo de novo. No Android, oclientIdnão é usado. - Se o 28444 apareceu pela primeira vez depois de atualizar do 6.x para o 7, desconfie do
serverClientId. A equipe do Flutter explica que o SDK antigo usado pelo 6.x nem sempre validava esse valor, então um valor errado pode ter funcionado (flutter/flutter #174319).
Ao migrar do SDK antigo para o Credential Manager
As APIs do antigo Google Sign-In for Android foram removidas no play-services-auth 22.0.0 (26 de agosto de 2026). Nessa versão ou em uma posterior, o código de login feito com GoogleSignInClient não compila, então migre para o Credential Manager.
| SDK antigo | Credential Manager |
|---|---|
A tela de login do GoogleSignInClient | GetSignInWithGoogleOption (botão) ou GetGoogleIdOption (página inferior) |
silentSignIn() | GetGoogleIdOption com setFilterByAuthorizedAccounts(true) e setAutoSelectEnabled(true) |
requestIdToken(webClientId) | O mesmo ID do cliente da Web no serverClientId |
signOut() | clearCredentialState() |
ApiException: 10 | [28444] Developer console is not set up correctly ou um cancelamento |
- O valor padrão de
setFilterByAuthorizedAccountsétrue. Usuários que nunca fizeram login neste app recebemNoCredentialException, então, no cadastro e no primeiro login, usefalseou o fluxo do botão. - No emulador, faça login numa Conta do Google. Use uma imagem do sistema com Google APIs. Sem nenhuma conta no dispositivo, ocorre
NoCredentialException.
Fontes
- CommonStatusCodes.DEVELOPER_ERROR, notas da versão do Google Play Services: o significado do 10 e a remoção das APIs do Google Sign-In
- Migrar do antigo Google Sign-In, implementar o Sign in with Google com o Credential Manager, solução de problemas do Credential Manager
- Autenticar com o Google no Android (Firebase), perguntas frequentes sobre problemas do Firebase no Android, o plug-in google-services, impressões digitais SHA e clientes OAuth (Ajuda do Firebase)
- Clientes OAuth (Ajuda do Google Cloud), obter o SHA-1, Assinatura de apps do Google Play, Compartilhamento interno de apps
- google_sign_in_android, flutter/flutter #174319 (relato do 28444), codelab do Sign in with Google
