Integracja pakietów SDK Firebase z aplikacją internetową

Firebase App Hosting idealnie nadaje się do dynamicznych aplikacji internetowych utworzonych za pomocą pakietu SDK Firebase JavaScript i Firebase Admin SDK dla Node.js. W pełnej aplikacji internetowej pakiety SDK Firebase, takie jak Authentication, Cloud Firestore i App Check, odgrywają ważną rolę. W tym przewodniku opisujemy kilka kluczowych strategii, które pomogą Ci zoptymalizować pakiety SDK Firebase i rozpocząć tworzenie aplikacji internetowej na platformie Firebase App Hosting z użyciem Firebase.

Automatycznie inicjuj pakiety SDK Firebase Admin SDK i pakiety SDK do aplikacji internetowych

Środowiska Google, takie jak Firebase App Hosting, zapewniają uproszczoną inicjalizację aplikacji przez wywołanie konstruktora bez argumentów w czasie kompilacji i działania. Jest to funkcja zarówno Firebase Admin SDK dla Node.js – pakietu SDK po stronie serwera, który odblokowuje duży obszar funkcji Firebase i może być bardzo przydatny w aplikacji internetowej – jak i pakietu SDK Firebase JavaScript.

Dzięki initializeApp() możesz pozwolić Firebase App Hosting na automatyczne wypełnianie konfiguracji aplikacji internetowej, zachowując jednocześnie możliwość szczegółowej kontroli nad konkretnymi wartościami, jeśli chcesz zastąpić wartości domyślne.

Inicjowanie bez argumentów

Aby zainicjować pakiet SDK Firebase Admin SDK lub Firebase JavaScript z domyślnymi wartościami konfiguracji, użyj initializeApp() bez podawania argumentów.

Admin SDK

import { initializeApp } from 'firebase-admin/app';
const app = initializeApp();

W przypadku Admin SDK ta strategia inicjowania działa w App Hosting, a także w innych środowiskach serwerów Google, w tym w funkcjach Cloud Run, App Engine i Cloud Run.

pakiet JavaScript SDK

import { initializeApp } from 'firebase/app';
const app = initializeApp();

W przypadku pakietu JavaScript SDK ta strategia inicjowania działa w App Hosting.

Zastępowanie wartości wypełnianych automatycznie

Możesz zastąpić domyślną konfigurację, która jest automatycznie wstrzykiwana. Pamiętaj, że te opcje różnią się w przypadku Admin SDK i pakietu JavaScript SDK.

Admin SDK zastąpienie

Aby opcjonalnie określić niestandardowe opcje inicjowania usług takich jak Baza danych czasu rzeczywistego, Cloud Storage lub Cloud Functions, użyj zmiennej środowiskowej FIREBASE_CONFIG. Jeśli zawartość zmiennej FIREBASE_CONFIG zaczyna się od znaku {, zostanie przeanalizowana jako obiekt JSON. W przeciwnym razie pakiet SDK zakłada, że ciąg znaków jest ścieżką do pliku JSON zawierającego opcje.

# apphosting.yaml

env:
  - variable: FIREBASE_CONFIG
    value: '{"databaseURL":"https://project-id-default-rtdb.firebaseio.com","projectId":"my-project-id"}'

Zastąpienie pakietu JavaScript SDK

Aby zastąpić domyślne wartości FIREBASE_WEBAPP_CONFIG, które App Hosting wstrzykuje na potrzeby inicjowania pakietu JavaScript SDK, możesz określić wartości w apphosting.yaml:

# apphosting.yaml

env:
  - variable: FIREBASE_WEBAPP_CONFIG
    value: '{"apiKey":"myApiKey","appId":"app:123","authDomain":"project-id.firebaseapp.com","databaseURL":"https://project-id-default-rtdb.firebaseio.com","messagingSenderId":"0123456789","projectId":"project-id","storageBucket":"project-id.firebasestorage.app"}'

Korzystanie z automatycznej inicjalizacji w innych środowiskach

Automatyczna inicjalizacja jest konfigurowana za pomocą skryptu npm postinstall podczas instalowania pakietu Firebase JavaScript SDK. Skrypt postinstall szuka zmiennej środowiskowej FIREBASE_WEBAPP_CONFIG, która jest ustawiana automatycznie w środowisku kompilacji Cloud Build App Hosting.

Jeśli instalujesz pakiet JS SDK poza Cloud Build, musisz samodzielnie ustawić tę zmienną środowiskową podczas instalowania pakietu Firebase JavaScript SDK.

Aby skonfigurować środowisko ręcznie podczas instalacji:

  1. Skopiuj obiekt konfiguracji aplikacji internetowej Firebase z konsoli Firebase.

  2. W terminalu ustaw zmienną środowiskową FIREBASE_WEBAPP_CONFIG przed uruchomieniem polecenia npm install.

FIREBASE_WEBAPP_CONFIG="{...}" npm install firebase

Za każdym razem, gdy zmienisz projekt Firebase lub aplikację internetową, uruchom ponownie to polecenie. Może być też konieczne wyczyszczenie pośrednich pamięci podręcznych (np. .next/cache).

Używanie FirebaseServerApp do renderowania po stronie serwera

Jeśli podczas tworzenia aplikacji internetowej korzystasz z pakietu Firebase JS SDK lub innych pakietów SDK klienta Firebase, prawdopodobnie znasz interfejs FirebaseApp i wiesz, jak go używać do konfigurowania instancji aplikacji. Aby ułatwić podobne operacje po stronie serwera, Firebase udostępnia FirebaseServerApp.

FirebaseServerApp to wariant FirebaseApp do użycia w środowiskach renderowania po stronie serwera (SSR). Zawiera narzędzia do kontynuowania sesji Firebase, które obejmują renderowanie po stronie klienta (CSR) i renderowanie po stronie serwera (SSR).

Korzystaj z FirebaseServerApp, aby:

  • wykonywanie kodu po stronie serwera w kontekście użytkownika, w przeciwieństwie do Firebase Admin SDK, który ma pełne uprawnienia administracyjne;
  • Włącz korzystanie z funkcji App Check w środowiskach SSR.
  • Kontynuuj sesję Firebase Auth utworzoną w kliencie.

Szczegółowe informacje o używaniu FirebaseServerApp do tych celów znajdziesz w artykule Używanie Firebase w dynamicznych aplikacjach internetowych z renderowaniem po stronie serwera.

Włączanie App Check w aplikacji internetowej

Możesz użyć App Check, aby zwiększyć bezpieczeństwo dynamicznej aplikacji internetowej w App Hosting. Wdrażając niektóre ze strategii po stronie serwera opisanych w artykule Używanie Firebase w dynamicznych aplikacjach internetowych z renderowaniem po stronie serwera, możesz chronić backendy App Hosting przed nadużyciami.