Вопрос или проблема
Я получаю эту ошибку:
Необработанное исключение: PlatformException(sign_in_failed, com.google.android.gms.common.api.ApiException: 10: , null, null)`
Есть несколько вещей, которые, как мне кажется, могут быть причиной проблемы. У меня есть существующее приложение, которое я переписываю с нуля. В существующем приложении есть вход в систему через Google, и я использую ту же учетную запись Firebase. Также, когда я начал писать новое приложение, я использовал неверный пакет, поэтому я изменил имя пакета на правильное. Сначала я собирался использовать новый проект Firebase и смог использовать вход в систему через Google с другим пакетом и учетной записью Firebase. Таким образом, может ли это быть связано с тем, что другое активное приложение использует это приложение Firebase?
Я подтвердил, что сделал следующее:
- задал SHA1 и SHA256 в Firebase
- подтвердил, что вход в Google включен в Firebase
- выполнил команды flutter clean, flutter doctor, сбросил кэш и перезапустил
- имею одно и то же имя пакета в приложении и в Firebase
- скачал новый google-services.json
Ответ или решение
Ошибка, с которой вы столкнулись, PlatformException(sign_in_failed, com.google.android.gms.common.api.ApiException: 10: , null, null)
, обычно связана с неправильной настройкой безопасности или аутентификации в вашем приложении Flutter при использовании Google Sign-In и Firebase. Рассмотрим возможные причины и решения данной проблемы.
Возможные причины возникновения ошибки:
-
Неверный SHA1/SHA256 ключ: Если вы изменили пакетный идентификатор приложения, убедитесь, что вы добавили правильные ключи SHA1 и SHA256 в консоль Firebase. Для этого:
- Перейдите в консоль Firebase.
- Выберите ваш проект и откройте раздел "Настройки проекта".
- Убедитесь, что ключи, которые вы добавили, соответствуют ключам вашего нового приложения. Вы можете получить их с помощью команды:
./gradlew signingReport
-
Неправильный package name: Если вы меняли имя пакета, убедитесь, что оно совпадает в вашем проекте и в настройках Firebase. Это критически важно, чтобы идентификаторы совпадали.
-
Конфликт с существующим проектом: Если у вас есть другой проект, использующий ту же учетную запись Firebase, но с другим package name, это может вызвать конфликты. В таком случае лучше создать отдельный проект в Firebase для нового приложения.
-
Отсутствие необходимых обязательств в Google Developer Console: Убедитесь, что ваш проект Firebase правильно настроен в Google Developer Console, а API Google Sign-In включен.
Проверка и настройка:
-
Проверьте файл
google-services.json
: Убедитесь, что вы скачали актуальный файл из консоли Firebase и поместили его в каталогandroid/app/
вашего проекта Flutter. -
Включите Google Sign-In:
- В консоли Firebase, перейдите в раздел "Authentication".
- Убедитесь, что метод аутентификации Google включен.
-
Пересоздайте файл
google-services.json
: Если вы изменили SHA1 и перезаписали его в Firebase, попробуйте скачать его снова. -
Обновите зависимости: Убедитесь, что ваши зависимости в
pubspec.yaml
актуальны. Запустите следующие команды:flutter clean flutter pub get
-
Проверьте
build.gradle
: Убедитесь, что вы правильно настроили файлandroid/app/build.gradle
. Проверьте наличие следующего:apply plugin: 'com.google.gms.google-services'
-
Тестируйте на устройстве: Убедитесь, что вы тестируете приложение на устройстве, а не на эмуляторе, так как некоторые настройки могут быть не поддерживаться на последних версиях эмулятора.
Дополнительно:
Если ни одно из вышеперечисленного не помогает, рекомендуется обратиться к документации Firebase и Google Sign-In. Они могут содержать обновления или дополнительные указания, которые помогут вам решить проблему.
Надеюсь, эти рекомендации помогут вам устранить ошибку и практически реализовать Google Sign-In в вашем приложении!