Firebase Invites "сообщение не отправлено"
Я установил и успешно использовал динамические ссылки Firebase в своем приложении. теперь я пытаюсь включить приглашения Firebase в том же приложении. Я следовал руководству по установке здесь. Руководство по установке Firebase Invites. он работает вплоть до отображения селектора, в котором я выбираю адрес электронной почты (или номер ячейки для смс), но когда я нажимаю отправить, появляется красная закусочная с сообщением "сообщение не удалось отправить", а метод onActivityResult() возвращает resultCode из 3.
Я посмотрел на все подобные проблемы на stackru, но не смог решить проблему.
у меня действительно была проблема с SHA-1, когда я настраивал динамические ссылки в приложении, см. мой вопрос о стековом потоке, но он был решен, и динамические ссылки работают отлично
Я был бы признателен за любую помощь в получении приглашений на работу. Спасибо.
3 ответа
Решил проблему. это было все о SHA-1.
Первоначально я создал подписанный APK для отладочной версии. Затем я извлек SHA-1 для этой версии, используя keytool, и добавил его в приложение в консоли Firebase. мои динамические ссылки работали нормально при этом сценарии, но приглашений не будет, что привело к ошибке "сообщение не удалось отправить".
Глядя на аналогичные проблемы в стеке потока, я заметил, что проблема может быть в SHA. некоторые предлагали включить как отладочную версию, так и выпуск SHA-1 в консоль Firebase. поэтому я сгенерировал подписанный релиз apk и извлек SHA-1, только чтобы понять, что он такой же, как отладочный SHA-1.
Затем я попробовал другой метод извлечения SHA-1 из отладочной версии. 1) (в Android Studio) я открыл экран проектов Gradle (правая боковая панель), 2) затем в окне проекта Gradle, я выбрал мое приложение> Задачи> Android>signatureReport (двойной щелчок на SigningReport запускается и отображается SHA-1 в окне "Выполнить" внизу экрана). я заметил, что этот SHA-1 отличается от SHA-1, который я получил от подписанного apk отладки.
Затем я добавил этот отпечаток SHA-1 в приложение в консоли Firebase (так что теперь у меня есть этот отладочный SHA-1 и добавленный в приложение apk SHA-1 в консоли Firebase). приглашает сейчас работает!
Для всех, у кого есть эта проблема, ключи SHA-1 необходимы для определенных сервисов Google Play. Invites - это одна из тех служб, которая требует ключ. Это действительно нигде не указано непосредственно в приложении, которое предлагает документацию, которую я мог найти, но это довольно ясно по следующей ссылке. Текст ниже взят из: https://developers.google.com/android/guides/client-auth
Некоторые службы Google Play (такие как Google Sign-in и App Invites) требуют от вас предоставить SHA-1 вашего сертификата подписи, чтобы мы могли создать клиент OAuth2 и ключ API для вашего приложения. Чтобы получить SHA-1, следуйте этим инструкциям:
Откройте терминал и запустите утилиту keytool, поставляемую с Java, чтобы получить отпечаток SHA-1 сертификата. Вы должны получить как отпечатки, так и отладочные сертификаты.
Чтобы получить сертификат выпуска сертификата:
keytool -exportcert -list -v \ -alias <your-key-name> -keystore <path-to-production-keystore>
Чтобы получить отпечаток сертификата отладки:
keytool -exportcert -list -v \ -alias androiddebugkey -keystore %USERPROFILE%\.android\debug.keystore
Утилита keytool предложит вам ввести пароль для хранилища ключей. Пароль по умолчанию для хранилища ключей отладки - Android. Keytool затем печатает отпечаток пальца на терминал
Я понимаю, что это старый, но у меня та же проблема. Забавно, что я получаю ошибку 3, не могу отправить 7 дней назад. Я "исправил" его, создав новые отпечатки SHA1 и SHA256, заменив их в Firebase и использовав самый последний файл google-services.json.
Я был в состоянии послать приглашения до вчера, когда это внезапно начало возвращать ошибку 3 снова. Теперь, 3 набора ключей и 2 прически спустя, это все еще не работает. У меня есть альфа-релиз в магазине игр; он использует тот же apk, что и мои устройства. Я в растерянности, я даже откатил свой локальный репозиторий, чтобы сделать коммит, который я сделал в день его работы. Nadda....