Диалог (форма Google) для учетных данных открывается успешно, но после ввода учетных данных я получаю эту ошибку. Я следовал инструкциям отсюда . Создал проект Firebase, включил API Google Диска (это то, что мне сейчас нужно) из консоли API Google.
Код, генерирующий исключение:
final GoogleSignIn _googleSignIn = GoogleSignIn(
scopes: [
'https://www.googleapis.com/auth/drive',
],
);
await _googleSignIn.signIn();
Это трассировка стека:
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)
Версия плагина google_sign_in - 4.0.0.
Это результат 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.
Любая помощь будет высоко ценится. Благодарность!
firebase
flutter
dart
firebase-authentication
google-signin
Боян Божидаров
источник
источник
ApiException: 10
и сначала обратитесь к документации - developers.google.com/android/reference/com/google/android/gms/… Убедитесь, что вы исправляете правильную проблему. Например, код 7 просто означает «нет подключения к Интернету».Ответы:
Я столкнулся с той же проблемой только сейчас. Это может произойти, если вы работаете в режиме отладки и не зарегистрировали
SHA
отпечаток пальца в firebase. Я решил это, создавdebug.keystore
и зарегистрировав в приложении на Firebase. Не забудьтеgoogle-services.json
после этого скачать новую . См. Также это .Изменить Если вы не можете использовать аутентификацию в режиме выпуска, попробуйте следующее:
-Добавьте отпечатки сертификата SHA ключа выпуска.
keytool -exportcert -list -v \ -alias <your-key-name> -keystore <path-to-production-keystore>
Подробнее об этом см. Здесь, в разделе
"get release certificate"
https://developers.google.com/android/guides/client-auth.Если ваша аутентификация по-прежнему не работает, вероятно, это связано с тем, что вы загрузили приложение из Playstore и включили функцию «Подписание приложений с помощью функции Google Play». В этом случае перейдите в консоль публикации Play Store и перейдите к подписанию приложений в разделе управления выпусками. Там вы найдете отпечаток сертификата SHA для регистрации в консоли Firebase.
источник
В проекте флаттера работает следующее решение:
Шаг 1. Создайте ключи SHA1 и SHA256 .
Шаг 2: Добавьте SHA1 и SHA256 в firebase. (в настройках вашего приложения)
Шаг 3: Загрузите google-services.json в android / app в папку проекта.
Шаг 4: В вашем терминале запустите команду
flutter clean
.Шаг 5: Запустите приложение Flutter.
Для получения дополнительной информации посетите:
https://developers.google.com/android/guides/client-auth
https://firebase.google.com/docs/flutter/setup.
источник
Когда я столкнулся с этой проблемой, я попробовал все другие решения, описанные в этом посте. Ничего из этого не сработало. В конце концов я понял это: в моей ситуации я должен был убедиться, что у меня установлен «адрес электронной почты поддержки».
источник
Вам необходимо настроить свой проект Google Cloud Api с помощью вашего пакета.
Убедитесь, что вы вошли в систему с той же учетной записью Firebase.
cd android
./gradlew signingReport
илиgradlew signingReport
google-services.json
flutter clean
IOS:
GoogleService-info.plist
источник
Я потратил целую вечность, пытаясь это исправить.
1. Откройте grade.properties. Этот файл находится в папке: {{ВАШ ПРОЕКТ}} / android / gradle.properties.
2. Добавьте следующий аргумент в org.gradle.jvmargs, как показано на снимке экрана.
-XX: MaxHeapSize = 256 м -Xmx256 м
3. Щелкните правой кнопкой мыши "gradlew" и выберите "Открыть в терминале". Этот файл находится в папке {{ВАШ ПРОЕКТ}} / android / gradlew
4. Введите следующую команду.
Если не сработало, сначала попробуйте вторую команду:
5. Дождитесь завершения компиляции и распечатки ключей SHA.
Используйте эти ключи для аутентификации вашего приложения на https://console.firebase.google.com/
источник
Мне не нужно было добавлять дополнительные SHA, я понял, что не включил метод входа в Google на вкладке аутентификации в консоли Firebase
источник
Дополнительные шаги, которые вам, возможно, придется предпринять, чтобы google_sign_in работал:
keytool -list -v -keystore ~/key.jks -alias key
У вас должно получиться всего не менее 6 учетных данных SHA : 2 из ключа отладки, 2 из ссылки Google Play и 2 из ключа выпуска. Обратите внимание, что вам не нужно повторно загружать файл google-services.json после добавления учетных данных SHA выпуска в 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.**
источник
Вы пропустили шаг настройки, чтобы включить вход в Google на firebase.
✅ Просто выполните эти шаги ниже
project-level setting
. Как создать сертификат .google-service.json
в свой проект.flutter clean
flutter run
источник
"Flutter clean" - это та часть, которую всем не хватает после регистрации SHA1 в Firebase Console!
источник
Одна из причин, по которой вы могли столкнуться с этой ошибкой, заключается в том, что вы не заполнили форму согласия Google OAuth. Это новое изменение Firebase.
Вот шаги, которые необходимо выполнить, чтобы заполнить форму согласия для вашего приложения:
Теперь ваш экран должен выглядеть так, как показано в шаге 6.
Вот выделенный пример того, как эти области должны быть заполнены на шаге 7.
Эти шаги сработали для меня! Хотя ссылка может еще не существовать, я хотел бы сослаться на источник этого решения здесь
источник
Для исключения платформы 10 попробуйте следующее:
источник
Это может показаться глупым, но это случилось со мной сейчас (после того, как я имел некоторый опыт работы с firebase в прошлом). Я заметил, что не включил аутентификацию Google. Убедитесь, что вы это сделали, так как вы все еще можете видеть запрос на вход (показывающий пользователей Google вашего телефона, если он не включен).
источник
Убедитесь, что SHA-1 должен быть ключом отладки, который создается только в вашей системе, а затем загрузите файл google-services.json и добавьте его в свой проект.
источник
убедитесь, что вы добавили
dependencies { classpath 'com.google.gms:google-services:4.2.0' }
в android / build.gradle и
apply plugin: 'com.google.gms.google-services'
в android / app / build.gradle . Кроме того, убедитесь, что applicationId в android / app / build.gradle совпадает с именем вашего пакета в AndroidManifest.xml (иногда вы можете забыть изменить applicationId после изменения имени пакета). Этот applicationatioonId или имя пакета в файле манифеста должно быть именем вашего пакета Android в приложении firebase.
источник
Вы должны сгенерировать SHA-1 и SHA-256 для каждого компьютера, который вы использовали. И добавьте их все в настройки проекта firebase.
И вам следует заполнить форму на вкладке OAuth Consent .
источник
Если раньше это работало, но теперь вы используете другой компьютер, вам нужно будет добавить новые отпечатки SHA-1 / SHA-256, сгенерированные этим ПК, в свой проект в Firebase . Хороший пошаговый пример этого: https://stackoverflow.com/a/56091158/5365164
источник
В моем случае это была глупая ошибка, убедитесь, что ваш applicationId в firebase, например: 'com.example.appname' точно совпадает с applicationId в вашем файле app / src / build.gradle в defaultConfig {}. Орфографические ошибки отсутствуют , нет верхнего регистра, конфликты строчных букв. В моем случае одна буква была прописной, что вызывало все проблемы.
источник
В android / app / build.gradle я изменил зависимости с com.android.tools.build:gradle:3.1.3 / com.google.gms: google-services: 3.2.1 на com.android.tools.build:gradle : 3.2.1 / com.google.gms: google-services: 4.2.0 . И это сработало.
источник
При регистрации приложения в Firebase я изменил свой applicationId на то, что подходит моему приложению. Однако это привело к тому, что на моем телефоне было установлено второе приложение Flutter, когда я запустил отладчик (конечно, из-за изменения applicationId). Так что в моей ситуации работало
remove
как установка, так иre-install
приложение.источник
Я пробовал все выше, и ничего не получалось. Моя ошибка заключалась в том, что у меня на диске было несколько папок с версией студии Android, и я вводил неправильный ключ SHA1 в настройках firebase.
источник
Создание пакета приложений (которое рекомендуется Google Play и Flutter) вызовет эту ошибку. Создание apk решит эту проблему.
См. Проблему 58194425.
источник
У меня была проблема, и на ее решение ушло 5 часов. Я помню, что где-то читал, что исключение API 10 означает, что есть проблема с отпечатками пальцев. Значит, это должно быть хранилище ключей или неправильная конфигурация в firebase. В конце концов, это было хранилище ключей. Я до сих пор не уверен, почему это сработало, но я, кстати, использовал Windows 10:
1.) Убедитесь, что в файле android / build.gradle у меня было следующее:
buildscript { repositories { google() jcenter() } dependencies { classpath 'com.android.tools.build:gradle:3.5.1' classpath 'com.google.gms:google-services:4.2.0' } }
2.) Я добавил эти две строчки в файл android / gradle.properties
android.useAndroidX=true android.enableJetifier=true
3.) Перешел в C: \ Users \ YOURUSER \ .android и удалил следующее:
4.) Откройте терминал от имени администратора и сгенерируйте хранилище ключей отладки в этом каталоге.
$ keytool -genkey -v -keystore debug.keystore -storepass android -alias androiddebugkey -keypass android -keyalg RSA -keysize 2048 -validity 10000
Получены отпечатки пальцев:
5.) Добавлены отпечатки SHA1 в конфигурацию в firebase
Это было с моей стороны. Надеюсь, это кому-то поможет.
источник
Убедитесь, что сертификаты подписи, которые вы используете на консоли firebase, такие же, как и те, которые используются в настройке отладки signatureConfigs >> в файле app / build.gradle, пока все еще находятся в разработке. Несоответствие вызывает ошибку.
источник
Это исправило это для меня. Я сделал небольшой рефакторинг в новом проекте. Я думал, что использую свой старый
google-services.json
файл, но я использовал не тот файл. Я пробовал все остальное в течение двух дней, прежде чем осознал эту простую ошибку.источник
Мне это помогло (возникла проблема с импортом SHA1)
cd .android я использовал и скопировал ключ SHA1 и вставил в firebase, конфигурацию проекта, приложение для Android, сертификат SHA
keytool -list -v -keystore debug.keystore -alias androiddebugkey -storepass android -keypass android
и я создал еще один ключ:
keytool -genkey -v -keystore debug.keystore -storepass android -alias androiddebugkeytwo -keypass android -keyalg RSA -keysize 2048 -validity 10000
и использовал это, чтобы взять еще один ключ SHA:
keytool -list -v -keystore debug.keystore -alias androiddebugkeytwo -storepass android -keypass android
Я скопировал и вставил еще один ключ в свой проект firebase.
также загрузил google-services.json и вставил его в Android / app внутри проекта flutter.
Это сработало правильно, мои зависимости 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
мой код:
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"); }
Надеюсь, это сработает.
источник
Пожалуйста, убедитесь, что вы делаете это:
Включите вход в Google из консоли firebase
Поместите свой SHA-1 при настройке приложения firebase для Android
источник
Я получаю эту ошибку: PlatformException (sign_in_failed, com.google.android.gms.common.api.ApiException: 7 :, null) Возможно, решение вам подходит.
И я понимаю, что мое отладочное устройство (режим отладки Android) не подключено к Интернету. Я думаю, что аутентификация не удалась, поэтому метод возвращает значение null или пользователя, равного нулю.
Возвращаемую переменную необходимо проверить перед использованием.
источник
В моем случае ни один из ответов не решил проблему. Поразмыслив, я понял, что некоторое время назад я изменил имя пакета своего приложения . Если это ваш случай, вы должны просто создать другое приложение в своем проекте Firebase с новым именем пакета и снова загрузить файл google-services.json.
источник
Однако приведенные выше ответы верны, но, тем не менее, если у вас возникла проблема, не забудьте проверить раздел signatureConfig {} файла app / build.gradle. В нем не должно быть нежелательных ссылок на файл хранилища ключей, которые могут вызывать несоответствие с google-services.json и хранилищем ключей.
источник
Если ваше выпущенное приложение не работает должным образом, и вы используете подписку Google Play, скопируйте SHA из своей учетной записи магазина воспроизведения , тот из вашего локального ключа не будет работать
источник