A caixa de diálogo (formulário do Google) para as credenciais foi aberta com êxito, mas depois de preencher minhas credenciais, recebo este erro. Eu segui as instruções daqui . Criei um projeto Firebase, habilitei a API Google Drive (é disso que eu preciso agora) do Console de APIs do Google.
O código que lança a exceção:
final GoogleSignIn _googleSignIn = GoogleSignIn(
scopes: [
'https://www.googleapis.com/auth/drive',
],
);
await _googleSignIn.signIn();
Esse é o rastreamento de pilha:
E/flutter ( 5068): [ERROR:flutter/shell/common/shell.cc(184)] Dart Error: Unhandled exception:
E/flutter ( 5068): PlatformException(sign_in_failed, com.google.android.gms.common.api.ApiException: 10: , null)
E/flutter ( 5068): #0 StandardMethodCodec.decodeEnvelope (package:flutter/src/services/message_codecs.dart:551:7)
E/flutter ( 5068): #1 MethodChannel.invokeMethod (package:flutter/src/services/platform_channel.dart:292:18)
E/flutter ( 5068): <asynchronous suspension>
E/flutter ( 5068): #2 GoogleSignIn._callMethod (package:google_sign_in/google_sign_in.dart:226:58)
E/flutter ( 5068): <asynchronous suspension>
E/flutter ( 5068): #3 GoogleSignIn._addMethodCall (package:google_sign_in/google_sign_in.dart:268:20)
E/flutter ( 5068): #4 GoogleSignIn.signIn (package:google_sign_in/google_sign_in.dart:339:48)
E/flutter ( 5068): #5 ThatsMyComponentState.theSignInFuction.<anonymous closure> (package:my_app/widgets/my_file.dart:666:45)
E/flutter ( 5068): <asynchronous suspension>
E/flutter ( 5068): #6 _InkResponseState._handleTap (package:flutter/src/material/ink_well.dart:507:14)
E/flutter ( 5068): #7 _InkResponseState.build.<anonymous closure> (package:flutter/src/material/ink_well.dart:562:30)
E/flutter ( 5068): #8 GestureRecognizer.invokeCallback (package:flutter/src/gestures/recognizer.dart:102:24)
E/flutter ( 5068): #9 TapGestureRecognizer._checkUp (package:flutter/src/gestures/tap.dart:242:9)
E/flutter ( 5068): #10 TapGestureRecognizer.acceptGesture (package:flutter/src/gestures/tap.dart:204:7)
E/flutter ( 5068): #11 GestureArenaManager.sweep (package:flutter/src/gestures/arena.dart:156:27)
E/flutter ( 5068): #12 _WidgetsFlutterBinding&BindingBase&GestureBinding.handleEvent (package:flutter/src/gestures/binding.dart:184:20)
E/flutter ( 5068): #13 _WidgetsFlutterBinding&BindingBase&GestureBinding.dispatchEvent (package:flutter/src/gestures/binding.dart:158:22)
E/flutter ( 5068): #14 _WidgetsFlutterBinding&BindingBase&GestureBinding._handlePointerEvent (package:flutter/src/gestures/binding.dart:138:7)
E/flutter ( 5068): #15 _WidgetsFlutterBinding&BindingBase&GestureBinding._flushPointerEventQueue (package:flutter/src/gestures/binding.dart:101:7)
E/flutter ( 5068): #16 _WidgetsFlutterBinding&BindingBase&GestureBinding._handlePointerDataPacket (package:flutter/src/gestures/binding.dart:85:7)
E/flutter ( 5068): #17 _invoke1 (dart:ui/hooks.dart:168:13)
E/flutter ( 5068): #18 _dispatchPointerDataPacket (dart:ui/hooks.dart:122:5)
A versão do plug-in google_sign_in é 4.0.0.
Essa é a saída de flutter doctot -v :
[√] Flutter (Channel stable, v1.0.0, on Microsoft Windows [Version 10.0.17763.253], locale en-US)
• Flutter version 1.0.0 at C:\src\flutter-0.7.3\flutter
• Framework revision 5391447fae (10 weeks ago), 2018-11-29 19:41:26 -0800
• Engine revision 7375a0f414
• Dart version 2.1.0 (build 2.1.0-dev.9.4 f9ebf21297)
[√] Android toolchain - develop for Android devices (Android SDK 28.0.3)
• Android SDK at C:\Users\myuser\AppData\Local\Android\Sdk
• Android NDK location not configured (optional; useful for native profiling support)
• Platform android-28, build-tools 28.0.3
• ANDROID_HOME = C:\Users\myuser\AppData\Local\Android\Sdk
• Java binary at: C:\Program Files\Android\Android Studio\jre\bin\java
• Java version OpenJDK Runtime Environment (build 1.8.0_152-release-1248-b01)
• All Android licenses accepted.
[√] Android Studio (version 3.3)
• Android Studio at C:\Program Files\Android\Android Studio
• Flutter plugin version 32.0.1
• Dart plugin version 182.5124
• Java version OpenJDK Runtime Environment (build 1.8.0_152-release-1248-b01)
[!] IntelliJ IDEA Community Edition (version 2018.1)
• IntelliJ at C:\Program Files\JetBrains\IntelliJ IDEA Community Edition 2018.1.6
X Flutter plugin not installed; this adds Flutter specific functionality.
X Dart plugin not installed; this adds Dart specific functionality.
• For information about installing plugins, see
https://flutter.io/intellij-setup/#installing-the-plugins
[!] VS Code, 64-bit edition (version 1.30.2)
• VS Code at C:\Program Files\Microsoft VS Code
• Flutter extension not installed; install from
https://marketplace.visualstudio.com/items?itemName=Dart-Code.flutter
[√] Connected device (1 available)
• Android SDK built for x86 • emulator-5554 • android-x86 • Android 8.1.0 (API 27) (emulator)
! Doctor found issues in 2 categories.
Qualquer ajuda será muito apreciada. Obrigado!
firebase
flutter
dart
firebase-authentication
google-signin
Boyan Bozhidarov
fonte
fonte
ApiException: 10
e consulte os documentos primeiro - developers.google.com/android/reference/com/google/android/gms/… Certifique-se de corrigir o problema correto. Por exemplo, o código 7 significaria apenas 'sem conexão com a Internet'.Respostas:
Eu me deparo com o mesmo problema agora. Isso pode acontecer se você estiver executando em depuração e não registrar uma
SHA
impressão digital no firebase. Resolvi isso gerando umdebug.keystore
e registrando-o dentro do aplicativo no Firebase. Não se esqueça de baixar o novogoogle-services.json
depois disso. Veja também isso .Editar Se você não conseguir usar a autenticação no modo de liberação, tente o seguinte:
-Adicione as impressões digitais do certificado SHA da chave de liberação.
keytool -exportcert -list -v \ -alias <your-key-name> -keystore <path-to-production-keystore>
Para mais detalhes sobre isso veja aqui na seção
"get release certificate"
https://developers.google.com/android/guides/client-authSe a sua autenticação ainda não estiver funcionando, provavelmente é porque você baixou o aplicativo da Playstore e ativou o "App Signing by Google Play Feature". Nesse caso, acesse o console de publicação da play store e vá para a assinatura do aplicativo sob gerenciamento de lançamento. Lá você encontrará a impressão digital do certificado SHA para registrar no Firebase console.
fonte
A seguinte solução funciona em projeto de flutter:
Etapa 1: gere as chaves SHA1 e SHA256 .
Etapa 2: adicionar SHA1 e SHA256 ao firebase. (nas configurações do seu aplicativo)
Etapa 3: Baixe google-services.json para android / app na pasta do seu projeto.
Etapa 4: Em seu terminal, execute o comando
flutter clean
.Etapa 5: execute seu aplicativo de vibração.
Para obter mais informações, visite:
https://developers.google.com/android/guides/client-auth
https://firebase.google.com/docs/flutter/setup
fonte
Quando me deparei com esse problema, tentei todas as outras soluções descritas neste post. Nenhum desses funcionou. Eventualmente eu descobri: na minha situação, eu precisava ter certeza de ter meu "e-mail de suporte" definido.
fonte
Você precisa configurar seu projeto Google Cloud Api com seu pacote.
Certifique-se de estar conectado com a mesma conta do Firebase
cd android
./gradlew signingReport
ougradlew signingReport
google-services.json
flutter clean
IOS:
GoogleService-info.plist
fonte
Passei muito tempo tentando consertar isso.
1. Abra grade.properties Este arquivo está localizado em: {{YOUR PROJECT}} / android / gradle.properties
2. Adicione o seguinte argumento a 'org.gradle.jvmargs' conforme mostrado na captura de tela.
-XX: MaxHeapSize = 256m -Xmx256m
3. Clique com o botão direito em 'gradlew' e vá para 'Abrir no Terminal'. Este arquivo pode ser encontrado em {{SEU PROJETO}} / android / gradlew
4. Digite o seguinte comando.
Se não funcionou, tente primeiro o segundo comando:
5. Espere que a compilação termine e suas chaves SHA sejam impressas para você.
Use essas chaves para autenticar seu aplicativo em https://console.firebase.google.com/
fonte
Para mim, não precisei adicionar SHAs extras, percebi que não habilitei o método de login do Google na guia Autenticação do console do Firebase
fonte
Etapas adicionais que você pode ter que seguir para que google_sign_in funcione:
keytool -list -v -keystore ~/key.jks -alias key
Você deve terminar com um total de pelo menos 6 credenciais SHA : 2 da chave de depuração, 2 da vinculação do Google Play e 2 da chave de liberação. Observe que você não precisa baixar novamente o arquivo google-services.json após adicionar as credenciais SHA de lançamento ao firebase.
# Flutter Wrapper -keep class io.flutter.app.** { *; } -keep class io.flutter.plugin.** { *; } -keep class io.flutter.util.** { *; } -keep class io.flutter.view.** { *; } -keep class io.flutter.** { *; } -keep class io.flutter.plugins.** { *; } # GooglePlay Services -keep class com.google.android.gms.** { *; } -dontwarn com.google.android.gms.** -keep class com.google.common.** { *; } -dontwarn com.google.common.**
fonte
Você perdeu a etapa de configuração para ativar o login do Google no Firebase.
✅ Basta concluir estas etapas suficientes abaixo
project-level setting
. Como gerar o certificado .google-service.json
em seu projeto.flutter clean
flutter run
fonte
"Flutter clean" é a peça que falta a todos depois de registrar o SHA1 no Firebase Console!
fonte
Para a exceção de plataforma 10, tente o seguinte:
fonte
Um dos motivos pelos quais você pode estar enfrentando esse erro é não ter preenchido o formulário de consentimento OAuth do Google. Esta é uma nova mudança no Firebase.
Aqui estão as etapas que você precisa seguir para preencher o formulário de consentimento para seu aplicativo:
Sua tela agora deve se parecer com este exemplo na etapa 6
Aqui está um exemplo destacado de como essas regiões devem ser preenchidas na etapa 7
Essas etapas funcionaram para mim! Embora o link ainda não exista, gostaria de fazer referência à fonte desta solução aqui
fonte
Isso pode parecer bobo, mas isso aconteceu comigo agora (depois de ter alguma experiência trabalhando com o firebase no passado). Percebi que não habilitei a autenticação do Google. Certifique-se de fazer isso, pois você ainda poderá ver o prompt de login (mostrando os usuários do Google do seu telefone, sem estar habilitado).
fonte
Certifique-se de que SHA-1 deve ser uma chave de depuração gerada apenas em seu sistema e, em seguida, baixe o arquivo google-services.json e anexe-o ao seu projeto
fonte
certifique-se de ter adicionado
dependencies { classpath 'com.google.gms:google-services:4.2.0' }
em android / build.gradle e
apply plugin: 'com.google.gms.google-services'
em android / app / build.gradle . Além disso, certifique-se de que applicationId em android / app / build.gradle seja igual ao nome do seu pacote em AndroidManifest.xml (você pode esquecer de alterar o applicationId depois de alterar o nome do pacote às vezes). Este aplicatioonId ou nome do pacote no arquivo de manifesto deve ser o nome do seu pacote android no aplicativo firebase.
fonte
Você deve gerar SHA-1 e SHA-256 para cada PC usado. E adicione-os todas às configurações do projeto Firebase.
E você deve preencher o formulário na guia Consentimento OAuth .
fonte
Se funcionou anteriormente, mas agora você está usando um PC diferente, você precisará adicionar novas impressões digitais SHA-1 / SHA-256 geradas por esse PC ao seu projeto no Firebase . Um bom exemplo passo a passo de como fazer isso: https://stackoverflow.com/a/56091158/5365164
fonte
No entanto, as respostas fornecidas acima estão corretas, mas ainda assim, se você estiver tendo problemas, não se esqueça de verificar a seção subscriptionConfig {} do app / build.gradle. Ele não deve ter nenhuma referência de arquivo de armazenamento de chave indesejada, o que pode estar causando uma incompatibilidade com google-services.json e o armazenamento de chave.
fonte
No meu caso, foi um erro bobo, certifique-se de que seu applicationId no firebase como: 'com.example.appname' corresponda exatamente ao applicationId em seu arquivo app / src / build.gradle, em defaultConfig {}. Sem erros de ortografia , sem maiúsculas, conflito de letras minúsculas. No meu caso, uma letra era maiúscula, o que causou todos os problemas.
fonte
Em android / app / build.gradle , alterei as dependências de com.android.tools.build:gradle:3.1.3 / com.google.gms: google-services: 3.2.1 para com.android.tools.build:gradle : 3.2.1 / com.google.gms: google-services: 4.2.0 . E funcionou.
fonte
Ao registrar o aplicativo no Firebase, alterei meu applicationId para algo adequado ao meu aplicativo. No entanto, isso resultou na instalação de um segundo aplicativo Flutter no meu telefone quando executei o depurador (claro, devido à alteração no applicationId). Então, o que funcionou para a minha situação foi
remove
tanto as instalações quantore-install
o aplicativo.fonte
Tentei de tudo acima e nada funcionou. Meu erro foi que eu tinha várias pastas de versão do Android Studio na minha unidade e estava alimentando a chave SHA1 errada nas configurações do firebase.
fonte
Criar um appbundle (recomendado pelo Google Play e pelo Flutter) causará esse erro. Construir um apk resolverá isso.
Veja o problema 58194425
fonte
Eu tive o problema e levei 5 horas para resolvê-lo. Lembro que li em algum lugar que API Exception 10 significa que há um problema com as impressões digitais. Portanto, tinha que ser o keystore ou uma configuração incorreta no firebase. Eventualmente, era o keystore. Ainda não sei por que isso funcionou, mas isso é o que eu fiz, a propósito, estou usando o Windows 10:
1.) Certifique-se de que no arquivo android / build.gradle eu tinha o seguinte:
buildscript { repositories { google() jcenter() } dependencies { classpath 'com.android.tools.build:gradle:3.5.1' classpath 'com.google.gms:google-services:4.2.0' } }
2.) Eu adicionei essas duas linhas ao arquivo android / gradle.properties
android.useAndroidX=true android.enableJetifier=true
3.) Navegou para C: \ Users \ YOURUSER \ .android e excluiu o seguinte:
4.) Abra o terminal como admin e gere o keystore de depuração neste diretório.
$ keytool -genkey -v -keystore debug.keystore -storepass android -alias androiddebugkey -keypass android -keyalg RSA -keysize 2048 -validity 10000
Obteve as impressões digitais:
5.) Adicionadas as impressões digitais SHA1 à configuração no firebase
Isso foi tudo do meu lado. Eu espero que isso ajude alguém.
fonte
Certifique-se de que os certificados de assinatura que você está usando no console do firebase são os mesmos usados em SignConfigs >> configuração de depuração no arquivo app / build.gradle enquanto ainda está em desenvolvimento. Falha de correspondência causa erro.
fonte
Isso consertou para mim. Fiz uma pequena refatoração em um novo projeto. Achei que estava usando meu
google-services.json
arquivo antigo, mas estava usando o arquivo errado. Tentei de tudo por dois dias antes de perceber esse erro simples.fonte
Isso foi ajudado para mim (foi um problema ao importar o SHA1)
cd .android i usei e copiei a chave SHA1 e colei no firebase, configuração do projeto, aplicativo Android, certificado SHA
keytool -list -v -keystore debug.keystore -alias androiddebugkey -storepass android -keypass android
e também criei mais uma chave com:
keytool -genkey -v -keystore debug.keystore -storepass android -alias androiddebugkeytwo -keypass android -keyalg RSA -keysize 2048 -validity 10000
e usei isso para pegar mais uma chave SHA:
keytool -list -v -keystore debug.keystore -alias androiddebugkeytwo -storepass android -keypass android
Copiei e colei adicionando mais uma chave no meu projeto Firebase.
também baixou google-services.json e colou em Android / app dentro do projeto flutter.
Isso funcionou corretamente, minhas dependências pubspec.yml:
http: ^0.12.0+2 cupertino_icons: ^0.1.2 firebase_auth: ^0.15.1 firebase_analytics: ^5.0.6 firebase_core: ^0.4.2+1 google_sign_in: ^4.0.14
meu código:
Widget _signInButton() { return OutlineButton( splashColor: Colors.grey, onPressed: () async { await signInWithGoogle() .then((FirebaseUser user) => print(user.displayName)) .catchError((e) => print(e)); }, ); } import 'package:firebase_auth/firebase_auth.dart'; import 'package:google_sign_in/google_sign_in.dart'; final FirebaseAuth _auth = FirebaseAuth.instance; final GoogleSignIn googleSignIn = new GoogleSignIn(); Future<FirebaseUser> signInWithGoogle() async { final GoogleSignInAccount googleSignInAccount = await googleSignIn.signIn(); final GoogleSignInAuthentication googleSignInAuthentication = await googleSignInAccount.authentication; final AuthCredential credential = GoogleAuthProvider.getCredential( accessToken: googleSignInAuthentication.accessToken, idToken: googleSignInAuthentication.idToken, ); final AuthResult authResult = await _auth.signInWithCredential(credential); final FirebaseUser user = authResult.user; print(user.displayName.toString()); assert(!user.isAnonymous); assert(await user.getIdToken() != null); final FirebaseUser currentUser = await _auth.currentUser(); assert(user.uid == currentUser.uid); return user; } void signOutGoogle() async { await googleSignIn.signOut(); print("User Sign Out"); }
Espero que funcione.
fonte
Certifique-se de fazer o seguinte:
Ative o login do Google em seu Firebase console
Coloque seu SHA-1 ao configurar seu aplicativo Android Firebase
fonte
Eu recebo este erro: PlatformException (sign_in_failed, com.google.android.gms.common.api.ApiException: 7 null) Talvez a solução seja boa para você.
E percebi que meu dispositivo de depuração (modo de depuração do Android) não está conectado à internet. Acho que a autenticação falhou, então o método retorna nulo ou usuário igual a nulo.
A variável retornada deve verificar antes de usar.
fonte
No meu caso, nenhuma das respostas resolveu o problema. Depois de pensar um pouco, percebi que há algum tempo mudei o nome do pacote do meu aplicativo . Se for o seu caso, você deve simplesmente criar outro aplicativo dentro do seu projeto Firebase com seu novo nome de pacote e baixar o arquivo google-services.json novamente.
fonte
Se seu aplicativo lançado não estiver funcionando corretamente e você estiver usando o Google Play Signing, copie o SHA de sua conta da Play Store , o de sua chave local não funcionará
fonte