Інтеграція Firebase Authentication в мобільний додаток

TRUETECH займається розробкою, підтримкою та обслуговуванням мобільних додатків iOS, Android, PWA. Маємо великий досвід та експертизу для публікації мобільних додатків до популярних маркетів Google Play, App Store, Amazon, AppGallery та інші.

Розробка та підтримка будь-яких видів мобільних додатків:

Інформаційні та розважальні мобільні програми
Новинки, ігри, довідники, онлайн-каталоги, погодні, фітнес та здоров'я, туристичні, освітні, соціальні мережі та месенджери, квіз, блоги та подкасти, форуми, агрегатори
Мобільні програми електронної комерції
Інтернет-магазини, B2B-додатки, маркетплейси, онлайн-обмінники, кешбек-сервіси, біржі, дропшиппінг-платформи, програми лояльності, доставка їжі та товарів, платіжні системи
Мобільні програми для управління бізнес-процесами
CRM-системи, ERP-системи, управління проектами, інструменти для команди продажів, облік фінансів, управління виробництвом, логістика та доставка, управління персоналом, системи моніторингу даних
Мобільні програми електронних послуг
Дошки оголошень, онлайн-школи, онлайн-кінотеатри, платформи надання електронних послуг, платформи кешбеку, відеохостинги, тематичні портали, платформи онлайн-бронювання та запису, платформи онлайн-торгівлі

Це лише деякі з типів мобільних додатків, з якими ми працюємо, і кожен із них може мати свої специфічні особливості та функціональність, а також бути адаптованим під конкретні потреби та цілі клієнта.

Послуги, які ми пропонуємо
Показано 1 з 1Усі 1735 послуг
Інтеграція Firebase Authentication в мобільний додаток
Середній
від 1 дня до 3 днів
Часті запитання

Наші компетенції:

Етапи розробки

Останні роботи

  • image_mobile-applications_feedme_467_0.webp
    Розробка мобільного додатка для компанії FEEDME
    792
  • image_mobile-applications_xoomer_471_0.webp
    Розробка мобільного додатку для компанії XOOMER
    671
  • image_mobile-applications_rhl_428_0.webp
    Розробка мобільного додатку для компанії RHL
    1097
  • image_mobile-applications_zippy_411_0.webp
    Розробка мобільного додатку для компанії ZIPPY
    969
  • image_mobile-applications_affhome_429_0.webp
    Розробка мобільного додатку для компанії Affhome
    914
  • image_mobile-applications_flavors_409_0.webp
    Розробка мобільного додатку для компанії FLAVORS
    495

Інтеграція Firebase Authentication в мобільний додаток

Firebase Authentication вирішує великий обсяг роботи з коробки: Email/Password, Phone, Google, Apple, Facebook, GitHub, anonymous auth — все це готові провайдери. Але "з коробки" не означає "без конфігурації". Проекти, які просто додали FirebaseAuth.getInstance() і вважали завдання вирішеним, регулярно отримують проблеми у production.

Найпоширеніші помилки конфігурації

ID Token vs Custom Token vs Access Token. Firebase Auth повертає Firebase ID Token — JWT, підписаний Google. Це не OAuth 2.0 access token для стороннього API. Якщо ваш backend не Firebase — необхідно верифікувати Firebase ID Token на сервері (admin.auth().verifyIdToken()), отримати UID та видати свій JWT. Бачив проекти, де Firebase ID Token передавався напрямку стороннім API в надії, що "токен є — значить авторизований". Це не працює.

Оновлення токену. Firebase SDK автоматично оновлює ID Token щогодини. Але currentUser?.getIdToken(forceRefresh: false) повертає кешований токен, який може бути за 55 хвилин до закінчення. Якщо передаєте токен на backend — викликайте getIdToken(forceRefresh: true) перед кожним запитом або використовуйте Auth.auth().currentUser?.getIDTokenResult() для перевірки expirationDate.

Sign in with Apple — окрема конфігурація. Apple вимагає передачі nonce — випадкової строки, хеш якої включається в Apple Identity Token. Firebase перевіряє цей хеш. Без nonce інтеграція працює на етапі розробки, але падає у production на деяких конфігураціях Apple ID.

// iOS — правильна інтеграція Sign in with Apple + Firebase
let nonce = randomNonceString()
currentNonce = nonce
let request = ASAuthorizationAppleIDProvider().createRequest()
request.requestedScopes = [.fullName, .email]
request.nonce = sha256(nonce)

При отриманні Apple credential:

let credential = OAuthProvider.appleCredential(
    withIDToken: appleIDToken,
    rawNonce: nonce, // передаємо оригінальний nonce, не хеш
    fullName: appleIDCredential.fullName
)
Auth.auth().signIn(with: credential)

Phone Authentication: нюанси

Firebase Phone Auth працює через reCAPTCHA верифікацію на iOS та Play Integrity / SafetyNet на Android. Проблеми:

  • На симуляторі iOS автоматично використовується invisible reCAPTCHA — у production на реальному пристрої поведінка може відрізнятися (з'являється challenge).
  • verifyPhoneNumber вимагає APNs налаштування для silent push на iOS — без цього верифікація не проходить на пристроях з push notifications.
  • На Android: PhoneAuthProvider.verifyPhoneNumber з PhoneAuthOptions.Builder. Використовуємо setActivity(this) — без прив'язки до Activity автоматичне визначення не працює.

Тестові номери телефонів у Firebase Console (+1 650-555-3434) дозволяють тестувати без реальних SMS — додайте їх для QA-середовища.

Listeners: AuthStateListener та IdTokenChangedListener

Два різні listener — різні події:

  • addAuthStateListener спрацьовує при login/logout користувача.
  • addIdTokenChangedListener додатково спрацьовує при кожному оновленні ID Token (щогодини).

Для синхронізації токену з backend — використовуємо IdTokenChangedListener. Для навігаційних рішень (показати екран логіну / приховати) — AuthStateListener.

На iOS важливо знімати listener при dealloc/deinit:

deinit {
    if let handle = authStateHandle {
        Auth.auth().removeStateDidChangeListener(handle)
    }
}

Інакше крах у момент, коли Firebase намагається викликати callback на вже деініціалізованому об'єкті.

Security Rules

Якщо використовуєте Firestore або Realtime Database — Security Rules повинні посилатися на request.auth.uid, а не довіряти client-side логіці. Типова дірка: колекція users без правила на читання — будь-який аутентифікований користувач читає дані будь-якого іншого.

Мінімальне правило:

match /users/{userId} {
  allow read, write: if request.auth != null && request.auth.uid == userId;
}

Мультитенантність

Firebase Authentication підтримує tenants (через Google Cloud Identity Platform — розширена версія Firebase Auth). Якщо у вас SaaS з ізольованими клієнтами — це правильний шлях замість створення окремих Firebase проектів. Auth.auth().tenantID = "tenant-xyz" — переключає контекст.

Етапи інтеграції

Створення Firebase проекту та конфігурація провайдерів → додавання GoogleService-Info.plist / google-services.json → реалізація auth flow з обробкою помилок → налаштування backend-верифікації ID Token → тестування email/phone/social провайдерів → аудит Security Rules → тестування на реальних пристроях.

Термін: 6–10 робочих днів для стандартного набору провайдерів (email + google + apple). Кожен додатковий соціальний провайдер (Facebook, Twitter) — плюс 1–2 дні з урахуванням налаштування developer accounts.