Firebase App Hosting to naturalne rozwiązanie dla dynamicznych aplikacji internetowych utworzonych za pomocą Firebase JavaScript SDK i Firebase Admin SDK dla Node.js. W pełni funkcjonalnej aplikacji internetowej pakiety Firebase SDK, takie jak 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 rozpocząć tworzenie Firebase w aplikacji internetowej w Firebase App Hosting.
Automatyczne inicjowanie Firebase Admin SDK i pakietów SDK dla aplikacji internetowych
Środowiska Google, takie jak Firebase App Hosting upraszczają inicjowanie aplikacji dzięki wywołaniu konstruktora bez argumentów w czasie kompilacji i działania. Jest to funkcja zarówno pakietu Firebase Admin SDK dla Node.js – pakietu SDK po stronie serwera, który odblokowuje dużą część funkcji Firebase i może być bardzo przydatny w aplikacji internetowej – jak i pakietu Firebase JavaScript SDK.
Dzięki funkcji initializeApp() możesz pozwolić Firebase App Hosting na automatyczne
wypełnianie konfiguracji aplikacji internetowej, zachowując jednocześnie możliwość
precyzyjnej kontroli nad określonymi wartościami, jeśli chcesz zastąpić wartości domyślne
wartości.
Inicjowanie bez argumentów
Aby zainicjować pakiet Firebase Admin SDK lub Firebase JavaScript SDK 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 oraz w innych środowiskach serwerowych Google, w tym w Cloud Run, App Engine, i funkcjach 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 automatycznie wypełnianych wartości
Możesz zastąpić domyślną konfigurację, która jest automatycznie wstrzykiwana. Pamiętaj że te opcje różnią się w zależności od tego, czy używasz pakietu Admin SDK czy JavaScript SDK.
Admin SDK zastępowanie
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 przyjmie, ż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ępowanie w pakiecie JavaScript SDK
Aby zastąpić domyślne wartości FIREBASE_WEBAPP_CONFIG, które App Hosting
wstrzykuje do 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"}'
Używanie automatycznego inicjowania w innych środowiskach
Automatyczne inicjowanie jest konfigurowane za pomocą skryptu npm postinstall
script podczas instalowania pakietu Firebase JavaScript SDK. Skrypt postinstall szuka zmiennej środowiskowej FIREBASE_WEBAPP_CONFIG, która jest automatycznie ustawiana 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 ręcznie skonfigurować środowisko podczas instalacji:
Skopiuj obiekt konfiguracji aplikacji internetowej 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 być też konieczne wyczyszczenie pamięci podręcznych pośrednich (np. .next/cache).
Używanie FirebaseServerApp do renderowania po stronie serwera
Jeśli podczas tworzenia aplikacji internetowej pracujesz z pakietem Firebase JS SDK lub innymi pakietami Firebase Client SDK, 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.
Używaj FirebaseServerApp do:
- wykonywania kodu po stronie serwera w kontekście użytkownika, w przeciwieństwie do Firebase Admin SDK, który ma pełne uprawnienia administracyjne;
- włączania korzystania z App Check w środowiskach SSR;
- kontynuowania sesji Firebase Auth utworzonej 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żywać App Check, aby zwiększyć bezpieczeństwo dynamicznej aplikacji internetowej w App Hosting. Wdrażając niektóre z konkretnych strategii po stronie serwera opisanych w artykule Używanie Firebase w dynamicznych aplikacjach internetowych z renderowaniem po stronie serwera, możesz chronić swoje App Hosting backendy przed nadużyciami.