Інтеграція Firebase Auth для аутентифікації на сайті

Наша компанія займається розробкою, підтримкою та обслуговуванням сайтів будь-якої складності. Від простих односторінкових сайтів до масштабних кластерних систем, побудованих на мікро сервісах. Досвід розробників підтверджено сертифікатами від вендорів.
Розробка та обслуговування будь-яких видів сайтів:
Інформаційні сайти або веб-програми
Сайти візитки, landing page, корпоративні сайти, онлайн каталоги, квіз, промо-сайти, блоги, ресурси новин, інформаційні портали, форуми, агрегатори
Сайти або веб-програми електронної комерції
Інтернет-магазини, B2B-портали, маркетплейси, онлайн-обмінники, кешбек-сайти, біржі, дропшиппінг-платформи, парсери товарів
Веб-програми для управління бізнес-процесами
CRM-системи, ERP-системи, корпоративні портали, системи управління виробництвом, парсери інформації
Сайти або веб-програми електронних послуг
Дошки оголошень, онлайн-школи, онлайн-кінотеатри, конструктори сайтів, портали надання електронних послуг, відеохостинги, тематичні портали

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

Пропоновані послуги
Показано 1 з 1 послугУсі 2065 послуг
Інтеграція Firebase Auth для аутентифікації на сайті
Середня
від 1 робочого дня до 3 робочих днів
Часті питання
Наші компетенції:
Етапи розробки
Останні роботи
  • image_website-b2b-advance_0.png
    Розробка сайту компанії B2B ADVANCE
    1262
  • image_web-applications_feedme_466_0.webp
    Розробка веб-додатків для компанії FEEDME
    1171
  • image_websites_belfingroup_462_0.webp
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    874
  • image_ecommerce_furnoro_435_0.webp
    Розробка інтернет магазину для компанії FURNORO
    1094
  • image_crm_enviok_479_0.webp
    Розробка веб-додатків для компанії Enviok
    831
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Розробка веб-сайту для компанії ФІКСПЕР
    851

Інтеграція Firebase Auth для аутентифікації на веб-сайті

Firebase Authentication — сервіс Google для управління аутентифікацією. З коробки підтримує email/пароль, Google, Facebook, Apple, Twitter, GitHub, телефон та анонімний вхід. SDK доступний для JS, iOS, Android, Web.

Основний сценарій використання: SPA або мобільний додаток на Firebase, серверна частина — Laravel API. Firebase видає JWT (ID Token), Laravel перевіряє його підпис через публічні ключі Google.

Ініціалізація Firebase на фронтенді

Встановити Firebase SDK та ініціалізувати з конфігом з Firebase Console:

import { initializeApp } from 'firebase/app';
import { getAuth } from 'firebase/auth';

const firebaseConfig = {
  apiKey: "YOUR_API_KEY",
  authDomain: "YOUR_AUTH_DOMAIN",
  projectId: "YOUR_PROJECT_ID",
  // ... інша конфіг
};

const app = initializeApp(firebaseConfig);
export const auth = getAuth(app);

Email/Password вхід

import { signInWithEmailAndPassword } from 'firebase/auth';

async function login(email: string, password: string) {
  try {
    const result = await signInWithEmailAndPassword(auth, email, password);
    const user = result.user;
    const idToken = await user.getIdToken();

    // Відправити idToken на backend
    await fetch('/api/auth/firebase-login', {
      method: 'POST',
      headers: { 'Content-Type': 'application/json' },
      body: JSON.stringify({ idToken })
    });
  } catch (error) {
    console.error('Вхід не вдався:', error);
  }
}

Google OAuth через Firebase

import { signInWithPopup, GoogleAuthProvider } from 'firebase/auth';

const provider = new GoogleAuthProvider();

async function loginWithGoogle() {
  const result = await signInWithPopup(auth, provider);
  const idToken = await result.user.getIdToken();

  // Відправити на backend
  await fetch('/api/auth/firebase-login', {
    method: 'POST',
    body: JSON.stringify({ idToken })
  });
}

Laravel: верифікація Firebase ID Token

Firebase публікує публічні ключі для верифікації JWT:

// Верифікація за допомогою Firebase Admin SDK
use Kreait\Firebase\Factory;

$firebase = (new Factory)
    ->withServiceAccount('/path/to/serviceAccountKey.json');

$auth = $firebase->createAuth();
$verifiedIdToken = $auth->verifyIdToken($idToken);

$uid = $verifiedIdToken->claims()->get('sub');

Верифікація без Firebase Admin SDK

Якщо не потрібен повний Firebase Admin SDK — перевіряти JWT через JWKS напрямку:

use Firebase\JWT\JWT;
use Firebase\JWT\Key;

$jwksUri = 'https://www.googleapis.com/robot/v1/metadata/x509/[email protected]';
$jwks = json_decode(file_get_contents($jwksUri), true);

$key = $jwks['keys'][0]; // Спрощено, насправді потрібно знайти по kid
$publicKey = "-----BEGIN CERTIFICATE-----\n" . wordwrap($key['x5c'][0], 64, "\n", true) . "\n-----END CERTIFICATE-----";

$decoded = JWT::decode($idToken, new Key($publicKey, 'RS256'));
$uid = $decoded->sub;

Робота з токеном на клієнті

Firebase ID Token закінчується через 1 годину. Клієнт повинен його оновляти:

auth.onAuthStateChanged(async (user) => {
  if (user) {
    const idToken = await user.getIdToken();
    // Використовувати токен у API запросах
    // Токен автоматично оновлюється при закінченні
  }
});

Телефонна аутентифікація

Firebase підтримує SMS верифікацію для телефонного входу.

Обмеження

  • Firebase Authentication безплатна до 10 000 активних користувачів на місяць (Spark plan)
  • Phone Auth: 10 SMS на день на Spark, потім платно
  • Дані зберігаються на серверах Google — не підходить для проектів з вимогами локалізації даних

Тимчасовість робіт

Етап Час
Налаштування Firebase проекту 0,5 дня
Frontend SDK + провайдери 1 день
Laravel верифікація токена 1 день
Оновлення токена + middleware 0,5 дня
Тести 1 день

Всього: 4–5 робочих днів.