Пример Android-приложения (Kotlin + Jetpack Compose) для работы с Firebase.
- Пользователь входит по email + паролю (Firebase Authentication, Sign-in method "Email/Password") — с регистрацией.
- После входа приложение читает из Cloud Firestore документ
users/<uid>и показывает уникальную строку, привязанную к пользователю (полеsecret).
Каждый пользователь получает строку, индивидуальную для него: документ определяется
по FirebaseUser.uid (уникален в рамках вашего проекта).
app/src/main/java/ru/filantrop/firebaseexampleapp/
├── MainActivity.kt # входная точка, переключение экранов по состоянию аутентификации
├── data/
│ ├── AuthRepository.kt # обёртка над Firebase Auth (email, слушатель состояния)
│ └── UserDataRepository.kt # чтение документа users/<uid> из Firestore
├── ui/
│ ├── MainViewModel.kt # состояние приложения (аутентификация + строка), маппинг ошибок
│ ├── LoginScreen.kt # экран входа
│ └── HomeScreen.kt # экран с уникальной строкой
└── util/TaskExt.kt # мост из Task-ов GMS в Kotlin-корутины (await)
В репозитории лежит заглушка app/google-services.json (пустой проект,
существующий API key, placeholder-web client). Приложение соберётся, но работать
не будет — нужно связать его с вашим реальным проектом Firebase.
- Создайте проект на https://console.firebase.google.com.
- Добавьте Android-приложение:
- пакет:
ru.filantrop.firebaseexampleapp; - имя:
Firebase Example(SHA-1 не требуется).
- пакет:
- Скачайте
google-services.jsonи положите его вapp/, заменив заглушку. - Authentication → Sign-in method — включите Email/Password.
- Firestore Database — создайте базу (режим Production).
В Firestore → Rules разрешите каждому пользователю читать только свой документ:
rules_version = '2';
service cloud.firestore {
match /databases/{database}/documents {
match /users/{userId} {
allow read: if request.auth != null && request.auth.uid == userId;
allow write: if false;
}
}
}
Строка — read-only: приложение её не меняет, только читает.
- Войдите в приложение (так в Authentication → Users появится пользователь).
- Скопируйте его UID.
- В Firestore создайте коллекцию
users(если её нет), затем внутри — документ с ID, равным UID, и строковым полемsecret(любое значение).
Теперь при входе этого пользователя приложение покажет его secret.
Для других пользователей покажется сообщение, что строка ещё не сохранена.
Альтернатива — генерировать строку автоматически при регистрации
(Cloud Function on Auth Trigger, пишущая users/<uid>). Для примера этого не нужно.
./gradlew :app:assembleDebug # или просто запустить в Android Studio
Требования: API 31+ (Android 12.0+), на устройстве должен быть Play Services.
- Состояние аутентификации отслеживается через
AuthStateListener, поэтому после выхода (signOut) приложение само вернётся на экран входа. - Ошибки входа отображаются на русском с учётом кода
FirebaseAuthException(auth/invalid-credential→ «Неверный email или пароль» и т.д.). - Версии библиотек Firebase задаёт BOM
firebase-bomвbuild.gradle.ktsмодуля app.