Проблема SHA-1 с Firebase, Google-Auth и Phone-Auth

В настоящее время я создаю приложение, в котором вы также можете войти в систему через свою учетную запись 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 после выпуска? И почему при отладке все работает, а не после релиза?

Было бы здорово, если бы кто-нибудь мог мне помочь.

1
0
5 028
5
Перейти к ответу Данный вопрос помечен как решенный

Ответы 5

Во избежание злоупотреблений аутентификация телефона 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.

Не думаю, что они полностью осознали проблему. Я вообще эмулятор не использую. Я использую свой мобильный телефон для отладки приложения. Когда приложение установлено на моем телефоне для отладки, оно входит в систему через Google и аутентифицируется по номеру телефона. Как только я хочу выпустить приложение и этот APK можно будет установить на другой мобильный телефон, возникает вышеупомянутая ошибка.

Jeremy Brehe 05.09.2018 18:59

Я думаю, вы, возможно, обновили Android Studio, изменив ключ отладки. Я обновил свое решение .... сработало ???

Aksh 05.09.2018 21:03

Я сделал это сейчас, но все равно получаю ту же ошибку. Однако я не понимаю, почему ошибка возникает только в окончательной версии приложения.

Jeremy Brehe 06.09.2018 17:32

Я тоже пробовал то же самое, но у меня никогда не было ошибок. В этом случае попробуйте изменить имя своего пакета, удалите приложение из проекта firebase, добавьте новое имя пакета.

Aksh 06.09.2018 17:35

Я предлагаю использовать инструмент firebase в студии Android.

Aksh 06.09.2018 17:36

Наконец-то я нашел решение !!! Версия 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? или мне нужно добавить еще и ключ загрузки?

bbadawee 30.07.2020 11:20

Вы можете запустить это в терминале:

./gradlew signingReport

и тогда вы получите sha1 и sha256

Другие вопросы по теме