Перейти к основному содержимому

Проблема с входом по номеру телефона SafetyNet на устройствах Android

Если вы сталкиваетесь с проблемами аутентификации по номеру телефона Firebase на устройствах Android, особенно при использовании эмуляторов или тестировании в режиме релиза, это руководство поможет выявить и устранить распространённые неполадки.

Firebase использует либо SafetyNet, либо reCAPTCHA для проверки того, что запросы на вход по номеру телефона исходят из вашего приложения. Проблемы обычно возникают, когда один из этих методов верификации настроен неправильно.

Чек-лист по устранению неполадок

Убедитесь, что следующие настройки выполнены:

  • Настройка Firebase

    • Ваш проект правильно настроен в Консоли Firebase.
    • Аутентификация Firebase включена.
    • Метод входа по номеру телефона активирован.
  • Процесс аутентификации по номеру телефона

    • Запросите у пользователя ввод номера телефона.
    • Отправьте код подтверждения на телефон пользователя.
    • Примите и проверьте код, введённый пользователем.
  • Настройка SafetyNet / reCAPTCHA

    • В вашем приложении включены необходимые зависимости Firebase и сервисов Google Play.
    • Отпечатки SHA-1 и SHA-256 добавлены в настройки проекта Firebase.
    • Ключ API либо не ограничен, либо добавлен в белый список.
  • Среда тестирования

    • Если вы используете эмулятор, протестируйте на физическом устройстве. Эмуляторы могут обходить или не проходить некоторые проверки целостности.

Методы верификации Firebase

Firebase использует один из следующих методов для подтверждения подлинности запросов на вход по номеру телефона:

  1. SafetyNet (устаревший)

    Если устройство поддерживает сервисы Google Play, Firebase использует аттестацию SafetyNet для подтверждения легитимности устройства.

    Устаревший API

    API аттестации SafetyNet устарел и заменён на Play Integrity API. После 31 января 2023 года вы больше не сможете включить API SafetyNet для новых проектов в Консоли Google Cloud.

    Чтобы использовать SafetyNet (если он ещё активен для вашего проекта):

    • Включите проверку устройств Android (устаревшая) в Консоли Google Cloud.
    • Убедитесь, что SHA-256 вашего приложения добавлен в Консоль Firebase в разделе Настройки проекта > Общие > Ваши приложения.
    • Используйте ключ API Firebase по умолчанию или запросите подключение к SafetyNet, если это необходимо.
    • Отслеживайте квоту здесь.

  2. Верификация reCAPTCHA

    Если SafetyNet недоступен (например, на устройстве без сервисов Google Play или в эмуляторе), Firebase переключается на верификацию reCAPTCHA. Задача reCAPTCHA обычно выполняется без взаимодействия с пользователем. Для этого потока требуется:

    • Действительный отпечаток SHA-1, добавленный в проект Firebase.
    • Неограниченный или добавленный в белый список доменов ключ API (например, your-project-name.firebaseapp.com).
    • Убедитесь, что оба потока — SafetyNet и reCAPTCHA — работают, чтобы поддерживать более широкий спектр устройств Android.
Настройка режима релиза

При выпуске приложения в Google Play Store убедитесь, что вы включили ключи SHA-1 и SHA-256 из консоли Play. Вот как это сделать:

  • Перейдите в Консоль Play → Ваше приложение → Релиз → Настройка → Подпись приложения
  • Скопируйте отпечатки SHA-1 и SHA-256 и добавьте их в Консоль Firebase в разделе Настройки проекта > Общие > Ваши приложения.

Подробнее

Всё ещё застряли? Проверьте логи Firebase, протестируйте на физическом устройстве и убедитесь, что ключи API и отпечатки добавлены правильно. Правильная настройка SafetyNet или reCAPTCHA критически важна для надёжной работы входа по номеру телефона на различных устройствах.