Firebase Phone Authentication выдает ошибку отсутствия идентификатора клиента при использовании Play Integrity API

При регистрации / входе в систему с помощью аутентификации телефона Firebase поток аутентификации всегда запускает поток reCAPTCHA, а после возврата в приложение выдает ошибку missing client identifier.

Моя установка ранее работала с API проверки устройства/безопасности.

Проблема возникла без каких-либо реальных изменений, о которых я знаю, за исключением обновлений зависимостей firebase в моем pubspec.

теперь я использую

firebase_core: ^2.10.0
firebase_auth: ^4.4.2

Понижение зависимостей до

firebase_core: 2.8.0 
firebase_auth: 4.2.10

хотя не помогло.

Что еще я проверил на данный момент:

  • Я выполнил (снова) все шаги на https://firebase.google.com/docs/auth/flutter/phone-auth
  • Я позаботился о том, чтобы связать правильный проект Google Cloud на странице Play Store Integrity API.
  • Я использую правильные клавиши SHA-1 со страницы «Подписание Play Store» (для сборок пакетов приложений) в консоли Firebase для своего приложения.
  • Я убедился, что правильный SHA-256 certificate fingerprint со страницы «Подписание Play Store» зарегистрирован в консоли Firebase.
  • Я зарегистрировал правильное приложение в консоли Firebase в меню «Проверка приложений» (хотя, возможно, это не связано)
  • Я проверил «Учетные данные» на странице управления Integrity API и убедился, что все настроено.
  • Я попытался жестко закодировать последнюю спецификацию Firebase в файле Android Gradle, но это не помогло.
  • Я жестко закодировал версию 21.1.0 библиотеки аутентификации Android Firebase в файле Android gradle, но это не помогло.
  • Я убедился, что мой ключ API Android не ограничен каким-либо API для тестирования.
  • Я убедился, что Chrome установлен на устройстве
  • Я понизил зависимость androidx.browser:browser в файле градиента Android до 1.3.0, но это не помогло.
  • Я проверил, что google-services.json актуален

Я что-то забыл или кто-нибудь сталкивался с похожей проблемой и решил ее после перехода на Integrity API?

Или, другими словами: что может пойти не так, если точно такая же настройка работает с активированным API проверки устройств, но не без него?

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

Ответы 1

Ответ принят как подходящий

Проблема решена.

Причина заключалась в том, что ключ приложения Android по адресу https://console.cloud.google.com/apis/credentials был ограничен приложениями Android:

И это вызвало ошибку в потоке reCAPTCHA, потому что ему нужен ключ, предположительно, также в браузере. Он должен быть установлен на None.

Во-вторых, почему он пошел и все еще идет в поток reCAPTCHA, в первую очередь, это то, что на стороне Firebase есть открытый инцидент: https://status.firebase.google.com/incidents/UY1LTFan8X5oybhphzfV

В настоящее время Integrity API не работает должным образом, и это также причина, по которой код работал с API-интерфейсом Safety Net — по крайней мере, до тех пор, пока ему не приходилось переходить в резервный поток / поток reCAPTCHA.

ОБНОВЛЕНИЕ: по состоянию на 1 мая 2023 года эта проблема полностью решена, и теперь Play Integrity API и аутентификация по телефону работают должным образом.

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