Firebase App Hosting doskonale sprawdza się w przypadku dynamicznych aplikacji internetowych utworzonych za pomocą pakietu SDK Firebase JavaScript i Firebase Admin SDK dla Node.js. W pełnej wersji aplikacji internetowej pakiety SDK, takie jak Firebase, Authentication, Cloud Firestore i App Check, odgrywają ważną rolę. W tym przewodniku opisujemy kilka kluczowych strategii, które pomogą Ci zoptymalizować Firebase pakiety SDK i zacząć tworzyć Firebase w aplikacji internetowej na Firebase App Hosting.
Automatyczne inicjowanie pakietów SDK Firebase Admin SDK i pakietów SDK internetowych
Środowiska Google, takie jak Firebase App Hosting, upraszczają inicjowanie aplikacji dzięki wywołaniu konstruktora bez argumentów w czasie kompilacji i wykonywania. Jest to funkcja zarówno Firebase Admin SDK pakietu 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 Firebase JavaScript pakietu SDK.
Dzięki initializeApp() możesz zezwolić Firebase App Hosting na automatyczne wypełnianie konfiguracji aplikacji internetowej, zachowując jednocześnie możliwość precyzyjnego kontrolowania poszczególnych wartości, 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 funkcji 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 serwerowych 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 wstrzykiwana automatycznie. Pamiętaj, że te opcje różnią się w zależności od pakietu SDK Admin SDK i pakietu SDK JavaScript.
Admin SDK zastąpienie
Aby opcjonalnie określić niestandardowe opcje inicjowania usług takich jak Baza danych czasu rzeczywistego, Cloud Storage czy Cloud Functions, użyj zmiennej środowiskowej FIREBASE_CONFIG. Jeśli zawartość zmiennej FIREBASE_CONFIG zaczyna się od znaku {, zostanie ona 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: '{"credential: applicationDefault()","databaseURL":"https://project-id-default-rtdb.firebaseio.com"}'
Zastąpienie pakietu JavaScript SDK
Aby zastąpić domyślne wartości FIREBASE_WEBAPP_CONFIG, które App Hosting wstawia podczas 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 postinstallnpm podczas instalowania pakietu Firebase JavaScript SDK. Skrypt postinstall szuka zmiennej środowiskowej FIREBASE_WEBAPP_CONFIG, która jest automatycznie ustawiana w środowisku kompilacji App Hosting Cloud Build.
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:
Skopiuj obiekt konfigurujący aplikację internetową Firebase z konsoli Firebase.
W terminalu ustaw zmienną środowiskową
FIREBASE_WEBAPP_CONFIGprzed uruchomieniem polecenianpm install.
FIREBASE_WEBAPP_CONFIG="{...}" npm install firebase
Za każdym razem, gdy zmienisz projekt Firebase lub aplikację internetową, ponownie uruchom to polecenie. Może też być konieczne wyczyszczenie pamięci podręcznych pośrednich (np. .next/cache).
Użyj FirebaseServerApp w przypadku SSR
Jeśli podczas tworzenia aplikacji internetowej korzystasz z pakietu Firebase JS SDK lub innych pakietów Firebase Client SDK, prawdopodobnie znasz FirebaseAppinterfejs 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.
Korzystaj z FirebaseServerApp, aby:
- Uruchamiać kod 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.
- Kontynuowanie sesji uwierzytelniania Firebase utworzonej na kliencie.
Szczegółowe informacje o używaniu FirebaseServerApp do tych celów znajdziesz w artykule Korzystanie z Firebase w dynamicznych aplikacjach internetowych z SSR.
Włącz App Check w aplikacji internetowej
Możesz używać App Check, aby zwiększyć bezpieczeństwo dynamicznej aplikacji internetowej na platformie App Hosting. Wdrażając niektóre z opisanych w artykule Używanie Firebase w dynamicznych aplikacjach internetowych z SSR strategie po stronie serwera, możesz chronić swoje App Hostingbackendy przed nadużyciami.