Tích hợp SDK Firebase với ứng dụng web

Firebase App Hosting là lựa chọn phù hợp cho các ứng dụng web động được tạo bằng Firebase SDK JavaScriptFirebase Admin SDK cho Node.js. Trong một ứng dụng web đầy đủ tính năng, các SDK Firebase như Authentication, Cloud FirestoreApp Check đóng vai trò quan trọng. Hướng dẫn này mô tả một số chiến lược chính giúp tối ưu hoá Firebase SDK và bắt đầu tạo Firebase vào ứng dụng web của bạn trên Firebase App Hosting.

Tự động khởi chạy Firebase Admin SDK và SDK web

Các môi trường của Google (chẳng hạn như Firebase App Hosting) cung cấp quy trình khởi chạy ứng dụng đơn giản thông qua lệnh gọi hàm khởi tạo không có đối số tại thời gian tạo và thời gian chạy. Đây là một tính năng của cả Firebase Admin SDK cho Node.js – một SDK phía máy chủ giúp mở khoá một phạm vi lớn các chức năng của Firebase và có thể rất hữu ích trong ứng dụng web của bạn – và SDK Firebase JavaScript.

Với initializeApp(), bạn có thể cho phép Firebase App Hosting tự động điền cấu hình ứng dụng web cho bạn trong khi vẫn giữ lựa chọn kiểm soát chi tiết các giá trị cụ thể nếu bạn muốn ghi đè các giá trị mặc định.

Khởi chạy mà không có đối số

Để khởi chạy SDK Firebase JavaScript hoặc Firebase Admin SDK bằng các giá trị cấu hình mặc định, hãy sử dụng initializeApp() mà không cung cấp bất kỳ đối số nào:

Admin SDK

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

SDK JavaScript

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

Chiến lược khởi tạo Admin SDK này cũng hoạt động trong App Hosting cũng như các môi trường máy chủ khác của Google, bao gồm Cloud Run, App Engine và Cloud Functions. Đối với JavaScript SDK, chiến lược này hoạt động trên App Hosting.

Ghi đè các giá trị được điền sẵn

Bạn có thể ghi đè cấu hình mặc định được tự động chèn. Xin lưu ý rằng các lựa chọn này khác nhau giữa Admin SDK và SDK JavaScript.

Admin SDK ghi đè

Để chỉ định các lựa chọn khởi tạo tuỳ chỉnh cho các dịch vụ như Realtime Database, Cloud Storage hoặc Cloud Functions (không bắt buộc), hãy sử dụng biến môi trường FIREBASE_CONFIG. Nếu nội dung của biến FIREBASE_CONFIG bắt đầu bằng ký tự {, thì nội dung đó sẽ được phân tích cú pháp dưới dạng một đối tượng JSON. Nếu không, SDK sẽ giả định rằng chuỗi này là đường dẫn của một tệp JSON chứa các lựa chọn.

# apphosting.yaml

env:
  - variable: FIREBASE_CONFIG
    value: '{"credential: applicationDefault()","databaseURL":"https://project-id-default-rtdb.firebaseio.com"}'

Ghi đè SDK JavaScript

Để ghi đè các giá trị FIREBASE_WEBAPP_CONFIG mặc định mà App Hosting chèn để khởi chạy JavaScript SDK, bạn có thể chỉ định các giá trị trong 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"}'

Sử dụng tính năng khởi tạo tự động trong các môi trường khác

Quá trình khởi chạy tự động được thiết lập bằng tập lệnh npm postinstall khi bạn cài đặt Firebase JavaScript SDK. Tập lệnh sau khi cài đặt sẽ tìm biến môi trường FIREBASE_WEBAPP_CONFIG. Biến này được thiết lập tự động trong môi trường App Hosting Cloud Build.

Nếu đang cài đặt JS SDK bên ngoài Cloud Build, bạn sẽ cần tự thiết lập biến môi trường này khi cài đặt Firebase JavaScript SDK.

Cách thiết lập môi trường theo cách thủ công khi cài đặt:

  1. Sao chép đối tượng cấu hình ứng dụng web Firebase từ bảng điều khiển của Firebase.

  2. Từ một thiết bị đầu cuối, hãy đặt biến môi trường FIREBASE_WEBAPP_CONFIG trước khi chạy lệnh npm install.

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

Bất cứ khi nào bạn thay đổi dự án Firebase hoặc ứng dụng web, hãy chạy lại lệnh này.

Sử dụng FirebaseServerApp cho SSR

Nếu đã làm việc với Firebase JS SDK hoặc các Firebase client SDK khác trong quá trình phát triển ứng dụng web, có thể bạn đã quen thuộc với giao diện FirebaseApp và cách sử dụng giao diện này để định cấu hình các thực thể ứng dụng. Để hỗ trợ các thao tác tương tự ở phía máy chủ, Firebase cung cấp FirebaseServerApp.

FirebaseServerApp là một biến thể của FirebaseApp để sử dụng trong môi trường kết xuất phía máy chủ (SSR). SDK này bao gồm các công cụ để tiếp tục các phiên Firebase trải rộng trên phân chia kết xuất phía máy khách (CSR) / kết xuất phía máy chủ.

Sử dụng FirebaseServerApp để:

  • Thực thi mã phía máy chủ trong ngữ cảnh người dùng, khác với Firebase Admin SDK có toàn quyền quản trị.
  • Cho phép sử dụng App Check trong môi trường SSR.
  • Tiếp tục một phiên xác thực Firebase được tạo trong ứng dụng.

Để biết thông tin chi tiết về cách sử dụng FirebaseServerApp cho những mục đích này, hãy xem bài viết Sử dụng Firebase trong các ứng dụng web động có tính năng SSR.

Bật App Check trong ứng dụng web

Bạn có thể sử dụng App Check để tăng cường tính bảo mật cho ứng dụng web động của mình trên App Hosting. Bằng cách triển khai một số chiến lược cụ thể ở phía máy chủ được mô tả trong phần Sử dụng Firebase trong các ứng dụng web động có SSR, bạn có thể bảo vệ các phần phụ trợ App Hosting của mình khỏi hành vi sai trái.