Firebase App Hosting идеально подходит для динамических веб-приложений, созданных с использованием Firebase JavaScript SDK и Firebase Admin SDK для Node.js. В полнофункциональном веб-приложении такие SDK Firebase , как Authentication , Cloud Firestore и App Check играют важную роль. В этом руководстве описаны некоторые ключевые стратегии, которые помогут оптимизировать SDK Firebase и начать интегрировать 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 Admin SDK или Firebase JavaScript SDK с использованием значений конфигурации по умолчанию используйте initializeApp() без указания каких-либо аргументов.
Admin SDK
import { initializeApp } from 'firebase-admin/app';
const app = initializeApp();
Для Admin SDK эта стратегия инициализации работает как в среде App Hosting , так и в других средах серверов Google, включая Cloud Run , App Engine и Cloud Functions .
JavaScript SDK
import { initializeApp } from 'firebase/app';
const app = initializeApp();
Для JavaScript SDK эта стратегия инициализации работает в App Hosting .
Переопределить автоматически заполняемые значения
Вы можете переопределить конфигурацию по умолчанию, которая внедряется автоматически. Обратите внимание, что эти параметры различаются между Admin SDK и JavaScript SDK.
Переопределение Admin SDK
Для указания пользовательских параметров инициализации таких сервисов, как база данных реального времени, облачное хранилище или облачные функции, используйте переменную среды 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.
Если вы устанавливаете JS SDK вне Cloud Build, вам потребуется самостоятельно установить эту переменную среды при установке Firebase JavaScript SDK.
Для ручной настройки среды при установке:
Скопируйте объект конфигурации вашего веб-приложения Firebase из консоли Firebase.
Перед выполнением команды
npm installустановите переменную средыFIREBASE_WEBAPP_CONFIGв терминале.
FIREBASE_WEBAPP_CONFIG="{...}" npm install firebase
При каждом изменении проекта Firebase или веб-приложения повторно запускайте эту команду. Также может потребоваться очистка промежуточных кэшей (например, .next/cache ).
Используйте FirebaseServerApp для SSR.
Если вы работали с Firebase JS SDK или другими клиентскими SDK Firebase при разработке веб-приложения, вы, вероятно, знакомы с интерфейсом FirebaseApp и тем, как использовать его для настройки экземпляров приложения. Для упрощения аналогичных операций на стороне сервера Firebase предоставляет FirebaseServerApp .
FirebaseServerApp — это вариант FirebaseApp , предназначенный для использования в средах серверного рендеринга (SSR). Он включает инструменты для продолжения сессий Firebase, охватывающих как клиентский, так и серверный рендеринг.
Используйте FirebaseServerApp для:
- В отличие от Firebase Admin SDK , который предоставляет полные права администратора, серверный код выполняется в контексте пользователя .
- Включите использование App Check в средах SSR.
- Продолжить сессию аутентификации Firebase, созданную на стороне клиента.
Подробную информацию об использовании FirebaseServerApp в этих целях см. в разделе «Использование Firebase в динамических веб-приложениях с SSR» .
Включите App Check в вашем веб-приложении.
Вы можете использовать App Check для повышения безопасности вашего динамического веб-приложения на App Hosting . Внедряя некоторые из конкретных стратегий на стороне сервера, описанных в разделе «Использование Firebase в динамических веб-приложениях с SSR» , вы можете защитить бэкэнд вашего App Hosting от злоупотреблений.