使用你自己的 Firebase 项目
要点在“后端 → 云服务”的 Firebase 连接器中粘贴 Firebase 服务账号密钥文件。MonstarX 会通过 Google 验证它,之后你的应用就能使用 Firestore、Firebase 登录、Cloud Storage、推送消息和 Realtime Database。你还可以把 Firestore 设为应用的主要数据存储,并把现有的表复制过去。
Firebase 是 Google 推出的一套应用服务,包括名为 Firestore 的文档数据库、登录、文件存储、推送通知等。如果你已经有一个 Firebase 项目(也许还配有一个现成的移动应用),可以把它连接到 MonstarX 应用,使用其中任意一项服务。
你可以只用 Firebase 做一件事(比如向移动应用的用户发送推送通知),也可以把 Firestore 设为应用的数据库,让网页应用和你的其他应用共享同一份数据。
- 一个 Firebase 项目,以及在 Firebase 控制台中访问其设置的权限。
- 如果要用 Firebase Authentication 让用户登录,还需要在该 Firebase 项目中添加一个 Web 应用。
如何连接 Firebase?
Section titled “如何连接 Firebase?”-
在 Firebase 控制台中,打开项目设置 → 服务账号,点击生成新的私钥,会下载一个 JSON 文件。
-
在 MonstarX 中打开项目,点击顶部栏中的后端,再点击云服务。
-
在连接器中点击 Firebase 旁的连接。
-
用文本编辑器打开这个 JSON 文件,复制全部内容,粘贴到服务账号密钥文件中。MonstarX 会从中读取你的项目 ID。
-
只在需要时填写选填字段:
- Web API 密钥:在“项目设置 → 常规 → 你的应用 → Web 应用 → apiKey”中查看。仅在使用 Firebase Authentication 让用户登录时需要。
- 存储桶:仅当你的文件不在项目的默认存储桶中时填写。
- Realtime Database 地址:仅 Realtime Database 需要,Firestore 无需填写。
-
点击连接 Firebase。MonstarX 会先通过 Google 验证密钥再保存,并在已连接旁显示它找到的内容:你的项目 ID 和 Firestore 集合,或者“尚无 Firestore 数据库”。
如果你粘贴错了文件,比如粘贴的是简短的 Web 应用配置,而不是服务账号密钥,MonstarX 会拒绝,并告诉你缺少哪些字段。
应用可以用 Firebase 做什么?
Section titled “应用可以用 Firebase 做什么?”连接后,用平常的话提出功能需求,比如“课程取消时,给会员发送推送通知”。MonstarX 会用 Firebase 来构建:
| Firebase 服务 | 应用可以做什么 |
|---|---|
| Firestore | 添加、读取、搜索、更新和删除文档;统计文档数量 |
| Authentication | 让用户注册和登录、重置密码、管理用户(需要 Web API 密钥) |
| Cloud Storage | 上传文件、获取下载链接、列出和删除文件 |
| Cloud Messaging | 向设备或主题发送推送通知 |
| Realtime Database | 读写数据(需要 Realtime Database 地址) |
一切都在应用的服务器上运行,所以访客永远看不到你的密钥。
Firestore 可以作为应用的数据库吗?
Section titled “Firestore 可以作为应用的数据库吗?”可以。每个应用一开始都使用 MonstarX 自带的数据库,但你可以改为把数据存放在 Firestore 中。
-
先连接 Firebase(见上文)。
-
在 后端云服务 中找到此应用的数据存储位置。
-
选择 Firestore(你的 Firebase 项目)。在连接 Firebase 之前,这一项会显示“请先连接 Firebase”,无法选择。
-
如果应用已经有数据,点击复制现有数据把数据迁移过去,并确认。
从此以后:
- MonstarX 会用集合和文档而不是表来构建,并在编写代码前先查看你真实的集合,绝不会编造你的数据中没有的字段。
- 后端数据库 会显示你的 Firestore 集合及其中的文档。它们在这里是只读的,由应用负责写入。
- 账户仍由 MonstarX 管理。 用户照常登录,后端用户 也和以前一样可用。这正是 MonstarX 保留自己的数据库、而不是删除它的原因。
要切换回来,在同一处选择 MonstarX 数据库。应用会原样回到自己的数据库。
“复制现有数据”会做什么?
Section titled ““复制现有数据”会做什么?”- 每张表会变成一个同名的集合,每一行变成一份文档。行的 ID 会成为文档的 ID。
- 再次运行时会更新这些文档,而不会重复添加。
- 四张登录相关的表会留在 MonstarX 的数据库中,账户就保存在那里。
- 它不会删除任何一边的任何内容。
- 较大的应用可能会分批复制。如果它提示为了不让请求太长而先停了下来,再运行一次,它就会从上次停下的地方继续。
- Firestore 和 Supabase 只能二选一。 应用的数据只存放在一个地方。要从 Supabase 换到 Firestore,请先把数据迁回 MonstarX 的数据库。不过 Firebase 连接器本身仍然可以和 Supabase 并用,用于存储、消息推送或登录。
- 应用中不需要 Firebase SDK。 MonstarX 通过一个内置的辅助工具访问 Firebase,在预览和已发布的应用中效果完全一样。
- 向移动设备推送需要移动应用提供的设备令牌;MonstarX 会向应用收到的令牌发送推送。
- 发布到 Google Cloud Run 使用的是另一个连接器,详见发布到其他托管平台。
在哪里找到服务账号密钥文件?
在 Firebase 控制台中:项目设置 → 服务账号 → 生成新的私钥。把整个 JSON 文件粘贴到服务账号密钥文件中。
可以只用 Firebase 发推送通知吗?
可以。连接 Firebase 不会迁移你的数据。除非你在此应用的数据存储位置中选择 Firestore,否则应用会继续使用 MonstarX 的数据库。
切换到 Firestore 后,用户需要新账户吗?
不需要。账户保留在 MonstarX 的数据库中,登录方式和以前一样。只有应用自己的数据会迁移到 Firestore。
提示“尚无 Firestore 数据库”,有问题吗?
只有在你想用 Firestore 时才有影响。它仍然可以连接,因为应用可能只需要存储、登录或推送。要使用 Firestore,请在 Firebase 控制台中创建一个 Firestore 数据库。
复制数据会删除什么吗?
不会。复制现有数据只会在 Firestore 中添加或更新文档,MonstarX 自己的数据库保持原样。