For the complete documentation index, see llms.txt. This page is also available as Markdown.

集成 Firebase

介绍在 Apps in Toss(迷你应用)WebView 环境中集成 Firebase 的方法。本文档 Vite(React + TypeScript) 基于该项目编写。


概述

Firebase 是提供认证、数据库、文件存储等多种功能的服务。在 Apps in Toss WebView 环境中也可以同样使用,不过, 安全设置和环境变量管理很重要。


1. 准备工作

  • Firebase 控制台账户(console.firebase.google.com)

  • 用 Vite(React + TypeScript) 制作的项目

  • Node.js、npm(或者 yarn、pnpm)

2. 创建 Firebase 项目

  1. 在 Firebase 控制台中 创建项目,即可创建新项目。

  2. 项目设置 → 添加应用Web(</>)

  3. 输入应用昵称并注册后,会显示如下配置信息 (firebaseConfig)。

const firebaseConfig = {
  apiKey: '...',
  authDomain: '...',
  databaseURL: '...',
  projectId: '...',
  storageBucket: '...',
  messagingSenderId: '...',
  appId: '...',
  measurementId: '...'
}

3. 设置环境变量

出于安全考虑,建议将 Firebase 配置信息通过 Vite 环境变量管理。

在项目根目录下 .env 文件,并按如下方式编写。

在代码中 import.meta.env.VITE_FIREBASE_API_KEY这样调用。

4. 安装并初始化 Firebase

本文以最新的 Firebase 模块化 SDK(v12+) 为准编写。

src/firebase/init.ts

注意:

  • databaseURLRealtime Database使用时才需要。如果使用 Firestore,可以省略。

  • measurementIdFirebase Analytics(Google Analytics)时需要。

5. Firestore 使用示例

如果已初始化 Firestore,就可以在 React 组件中读取或写入数据。下面是 App.tsx中读取和保存单个文档的最简单示例。

运行方式

  • 读取数据(getDoc)

    • 只会读取一次 Firestore 中的 users/exampleUser 文档。

    • 如果文档存在,会将 snap.data() 的值显示在画面上。

  • 写入数据(setDoc)

    • 会将输入的姓名覆盖写入 Firestore。

    • 如果文档不存在,会自动新建。

Firestore 除了单个文档之外,还支持多种功能。

  • 实时订阅: onSnapshot(doc(...))可在文档发生变更时自动更新 UI。

  • 处理集合: collection(), addDoc()可以用来添加和读取多个文档。

  • 文件存储: getStorage()连接 Storage后,可上传图片或文件。

  • 认证联动: getAuth()结合使用时,可以按用户分别保存数据。

6. 安全检查清单

  • 将敏感信息通过环境变量管理

    • Firebase API Key、服务账号密钥等不要直接写在代码里, .env请通过环境变量管理。

  • 不要将环境文件上传到 Git 等仓库

    • .env 请务必将 .gitignore中。

    • 如果密钥泄露,请立即在 Firebase 控制台重新签发,并检查相关项目权限。

  • 设置 Firebase 安全规则

    • Firestore / Storage 默认对所有用户开放。

    • 发布前务必修改规则,只允许已认证用户访问。

  • 确认来源(Origin)限制

    • 请在 Firebase 控制台的 Authentication / Hosting / API Key 设置中限制允许的域名。

    • 只允许迷你应用(WebView)域名,可以防止未授权访问。

允许的目标域名