В настоящее время я создаю приложение, в котором вы также можете войти в систему через свою учетную запись Google или номер мобильного телефона с помощью Firebase. С keytool я уже прочитал свой SHA-1 и сохранил его в настройках проекта Firebase (я также прочитал значение SHA-1 через Gradle в Android-Studio, конечно, это то же значение, что и в Keytool.). Когда я тестирую приложение во время отладки, все работает нормально. Как только я выпускаю APK (подписанные APK V1 и V2) и устанавливаю этот APK, вход через Google или номер мобильного телефона становится невозможным.
Ошибка:
This app is not authorized to use Firebase Authentication. Please verify the correct package name and SHA-1 are configured in the Firebase Console. [App validation failed]
В консоли Firebase указан правильный SHA-1. Или APK имеет другое значение SHA-1 после выпуска? И почему при отладке все работает, а не после релиза?
Было бы здорово, если бы кто-нибудь мог мне помочь.
Во избежание злоупотреблений аутентификация телефона firebase не работает в эмуляторе.
But if you want it for testing purpose then you should add use some testing phone number in firebase console that will work in emulator.
Перейдите в консоль firebase -> Аутентификация -> Метод входа -> Телефон и проверьте поле «Номера телефонов для тестирования (необязательно)».
Убедитесь, что добавляемый номер телефона не зарегистрирован / не зарегистрирован ранее. Если номер уже присутствует при аутентификации, вы не можете добавить его в качестве тестовой учетной записи.
Если вы не используете эмулятор, выполните следующие действия:
Tools>Firebase>Authentication>Connect>Sync
Обычно это происходит при обновлении студии Android.
Я думаю, вы, возможно, обновили Android Studio, изменив ключ отладки. Я обновил свое решение .... сработало ???
Я сделал это сейчас, но все равно получаю ту же ошибку. Однако я не понимаю, почему ошибка возникает только в окончательной версии приложения.
Я тоже пробовал то же самое, но у меня никогда не было ошибок. В этом случае попробуйте изменить имя своего пакета, удалите приложение из проекта firebase, добавьте новое имя пакета.
Я предлагаю использовать инструмент firebase в студии Android.
Наконец-то я нашел решение !!! Версия apk имеет другое значение SHA-1 и SHA-256, чем apk отладки. После создания релиза apk с обеими сигнатурами вам нужно вручную запросить значение SHA-1 релиза с помощью keytool. Затем его можно ввести в консоли Firebase.
На тот случай, если это кому-то еще понадобится, вот подробное объяснение ...
Во время отладки вы создаете отладочный ключ sha1, который позволит вам правильно работать в режиме отладки, но когда вы создаете подписанный apk, для этого вам необходимо сгенерировать sha1 для сборок выпуска.
Для этого keytool -list -v -keystore (now here you need to provide the relative path for your key.keystore[which you generated while generating signed apk]) -alias (now the alias name is present in gradle.properties and default is my-key-alias)
Кроме того, это работает и для тех, чье приложение получает ОТП после создания подписанного apk на определенном устройстве, но не на другом устройстве.
Надеюсь это поможет.
Потратив целый день на выяснение, в чем проблема. Я нашел виноватого! Мы выбрали функцию подписи приложений для Google Play. Нам необходимо зарегистрировать SHA-1 из самой подписи приложений. Его можно найти внутри консоли Google Play в разделе Release Management> App Signing. У него будет два типа сертификатов:
1.Загрузить сертификат: это информация о сертификате из загруженного хранилища ключей. Это должно совпадать с хранилищем ключей для локальной подписи приложения, поскольку Google Play будет проверять загруженное приложение на соответствие этому подписанному сертификату.
2.Сертификат подписи приложения: после загрузки приложения Google заменит сертификат загрузки этим сертификатом. Это новый сертификат, который будет использоваться для опубликованного приложения в Play Store.
Обладая этой информацией, я просто понимаю, что мы не зарегистрировали SHA-1 для сертификата подписи приложения, который используется опубликованным приложением. Итак, я добавил отпечатки пальцев SHA-1 (также SHA-256, на всякий случай) в Firebase> Настройки проекта для приложения (не забудьте обновить последний файл конфигурации после добавления отпечатков пальцев).
Итак, после добавления ваших отпечатков SHA отпечатки сертификатов Firebase SHA будут выглядеть следующим образом:

Теперь сохраните изменения, затем вернитесь в свое приложение и снова протестируйте его, теперь оно будет работать !.
так что в моем проекте firebase должен быть 1- ключ отладки Sha1 2- ключ сертификата подписи приложения Sha1? или мне нужно добавить еще и ключ загрузки?
Вы можете запустить это в терминале:
./gradlew signingReport
и тогда вы получите sha1 и sha256
Не думаю, что они полностью осознали проблему. Я вообще эмулятор не использую. Я использую свой мобильный телефон для отладки приложения. Когда приложение установлено на моем телефоне для отладки, оно входит в систему через Google и аутентифицируется по номеру телефона. Как только я хочу выпустить приложение и этот APK можно будет установить на другой мобильный телефон, возникает вышеупомянутая ошибка.