Firebase App Hosting идеально подходит для динамических веб-приложений, созданных с использованием Firebase JavaScript SDK и Firebase Admin SDK для Node.js. В полнофункциональном веб-приложении такие Firebase SDK, как Authentication , Cloud Firestore и App Check играют важную роль. В этом руководстве описаны некоторые ключевые стратегии, которые помогут оптимизировать Firebase SDK и начать интеграцию Firebase в ваше веб-приложение на Firebase App Hosting .
Автоматическая инициализация Firebase Admin SDK и веб-SDK
Среды Google, такие как Firebase App Hosting обеспечивают упрощенную инициализацию приложений посредством вызова конструктора без аргументов во время сборки и выполнения. Эта функция доступна как в Firebase Admin SDK для Node.js (серверном SDK, который открывает доступ к широкому спектру функций Firebase и может быть очень полезен в вашем веб-приложении), так и в Firebase JavaScript SDK .
С помощью initializeApp()
вы можете разрешить Firebase App Hosting автоматически заполнять конфигурацию веб-приложения, сохраняя при этом возможность точного управления конкретными значениями, если вы хотите переопределить значения по умолчанию.
Инициализировать без аргументов
Чтобы инициализировать Firebase JavaScript SDK или Firebase Admin SDK со значениями конфигурации по умолчанию, используйте initializeApp()
без предоставления каких-либо аргументов:
Admin SDK
import { initializeApp } from 'firebase-admin/app';
const app = initializeApp();
JavaScript SDK
import { initializeApp } from 'firebase/app';
const app = initializeApp();
Эта стратегия инициализации Admin SDK работает как в App Hosting , так и в других серверных средах Google, включая Cloud Run, App Engine и Cloud Functions. Для JavaScript SDK эта стратегия работает в App Hosting .
Переопределить автоматически заполненные значения
Вы можете переопределить конфигурацию по умолчанию, которая внедряется автоматически. Обратите внимание, что эти параметры различаются в Admin SDK и JavaScript SDK.
Переопределение Admin SDK
Чтобы указать дополнительные параметры инициализации для таких сервисов, как Realtime Database, Cloud Storage или Cloud Functions, используйте переменную окружения FIREBASE_CONFIG
. Если содержимое переменной FIREBASE_CONFIG
начинается с символа {
, оно будет интерпретировано как JSON-объект. В противном случае SDK предполагает, что строка представляет собой путь к JSON-файлу, содержащему параметры.
# apphosting.yaml
env:
- variable: FIREBASE_CONFIG
value: '{"credential: applicationDefault()","databaseURL":"https://project-id-default-rtdb.firebaseio.com"}'
Переопределение JavaScript SDK
Чтобы переопределить значения FIREBASE_WEBAPP_CONFIG
по умолчанию, которые App Hosting внедряет для инициализации JavaScript SDK, вы можете указать значения в 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"}'
Использование автоматической инициализации в других средах
Автоматическая инициализация настраивается с помощью скрипта npm postinstall при установке Firebase JavaScript SDK. Скрипт postinstall ищет переменную окружения FIREBASE_WEBAPP_CONFIG
, которая автоматически задаётся в среде App Hosting Cloud Build.
Если вы устанавливаете JS SDK вне Cloud Build, вам потребуется самостоятельно задать эту переменную среды при установке Firebase JavaScript SDK.
Чтобы настроить среду вручную при установке:
Скопируйте объект конфигурации веб-приложения Firebase из консоли Firebase.
В терминале задайте переменную среды
FIREBASE_WEBAPP_CONFIG
перед запуском командыnpm install
.
FIREBASE_WEBAPP_CONFIG="{...}" npm install firebase
Каждый раз при изменении проекта Firebase или веб-приложения повторно запускайте эту команду.
Используйте FirebaseServerApp
для SSR
Если вы работали с Firebase JS SDK или другими клиентскими SDK Firebase при разработке веб-приложения, вы, вероятно, знакомы с интерфейсом FirebaseApp
и тем, как его использовать для настройки экземпляров приложения. Для упрощения аналогичных операций на стороне сервера Firebase предоставляет FirebaseServerApp
.
FirebaseServerApp
— это вариант FirebaseApp
для использования в средах серверного рендеринга (SSR). Он включает в себя инструменты для продолжения сеансов Firebase, охватывающих как клиентский (CSR), так и серверный рендеринг.
Используйте FirebaseServerApp
для:
- Выполнять серверный код в контексте пользователя , в отличие от Firebase Admin SDK , который имеет полные права администратора.
- Включить использование App Check в средах SSR.
- Продолжить сеанс аутентификации Firebase, созданный в клиенте.
Полную информацию об использовании FirebaseServerApp
для этих целей см. в разделе Использование Firebase в динамических веб-приложениях с SSR .
Включите App Check в вашем веб-приложении
Вы можете использовать App Check для повышения безопасности своего динамического веб-приложения на App Hosting . Реализовав некоторые из конкретных стратегий на стороне сервера, описанных в статье «Использование Firebase в динамических веб-приложениях с SSR» , вы можете защитить бэкенд App Hosting от злоупотреблений.