此页面简要概述了与 Firebase 项目有关的几个重要概念。您可以点击相应链接(如果有),以详细了解功能、服务甚至其他平台。在此页面的底部,您可以找到 Firebase 项目的一般最佳实践列表。
Firebase 项目、应用和产品之间的关系
Firebase 项目是 Firebase 的顶级实体。在项目中,您可以通过注册 Apple、Android 或 Web 应用来创建 Firebase 应用。在 Firebase 中注册应用后,您可以为任意数量的 Firebase 产品(如 Analytics、Cloud Firestore、Performance Monitoring 或 Remote Config)添加 Firebase SDK。
如需详细了解此过程,请参阅入门指南(Apple 平台 | Android | Web | Unity | C++)。
Firebase 项目与 Google Cloud 之间的关系
在 Firebase 控制台中创建新的 Firebase 项目时,您实际上是在幕后创建 Google Cloud 项目。您可以将 Google Cloud 项目视为数据、代码、配置和服务的虚拟容器。Firebase 项目就是一个具有额外 Firebase 特定配置和服务的 Google Cloud 项目。您甚至可以先创建 Google Cloud 项目,然后再将 Firebase 添加到该项目中。
由于 Firebase 项目也是 Google Cloud 项目,因此:
Firebase 控制台中显示的项目也会显示在 Google Cloud Console 和 Google API 控制台中。
您可以在一个项目中同时使用 Firebase 和 Google Cloud 的产品与 API。
删除项目会将其同时从 Firebase 和 Google Cloud 中删除。
设置 Firebase 项目并注册应用
您可以在 Firebase 控制台中设置 Firebase 项目并注册应用(或者,对于高级用例,可以通过 Firebase Management REST API 或 Firebase CLI 执行这些操作)。在设置项目并注册应用时,您需要做出一些组织决策,并将特定于 Firebase 的配置信息添加到您的本地项目中。
在设置项目并注册应用之前,请务必查看一些一般项目级最佳实践(在本页面底部)。
项目名称
创建项目时,您需要提供项目名称。此标识符是项目在 Firebase 控制台、Google Cloud Console 和 Firebase CLI 中的名称,仅限内部使用。项目名称不会在任何公开可见的 Firebase 或 Google Cloud 产品、服务或资源中公开;它只用来帮助您更轻松地区分多个项目。
您可以随时在 Firebase 控制台的 项目设置中修改项目名称。项目名称会显示在顶部窗格中。
项目编号
Firebase 项目(及其关联的 Google Cloud 项目)有一个项目编号。这是由 Google 为项目分配的全局唯一的规范化标识符。在配置集成和/或对 Firebase、Google 或第三方服务进行 API 调用时,需要使用此标识符。
API 调用和项目编号
对于许多 API 调用,您需要提供项目的唯一标识符。尽管许多 API 都接受项目 ID,但我们建议您在对 Firebase、Google 或第三方服务进行 API 调用时使用项目编号。
如需详细了解如何使用项目标识符(尤其是项目编号),请参阅 Google 的 AIP 2510 标准。
查找项目编号
Firebase 控制台:点击 项目设置。项目编号会显示在顶部窗格中。
Firebase CLI:运行
firebase projects:list
。系统会显示项目编号以及与您的帐号关联的所有 Firebase 项目。Firebase Management REST API:调用
projects.list
。 响应正文中的FirebaseProject
对象内包含项目编号。
项目 ID
Firebase 项目(及其关联的 Google Cloud 项目)有一个项目 ID。这是项目在整个 Firebase 和 Google Cloud 中的唯一标识符,由用户定义。当您创建 Firebase 项目时,Firebase 会自动为该项目分配一个唯一 ID,但您可以在项目设置过程中对其进行修改。通常,应将此标识符视为可方便引用该项目的别名。
如果您删除项目,项目 ID 也会被删除,并且任何其他项目都不能再次使用此 ID。
Firebase 资源和项目 ID
项目 ID 会显示在公开可见的 Firebase 资源中,例如:
- 默认托管子网域 -
PROJECT_ID.web.app
和PROJECT_ID.firebaseapp.com
- 默认 Realtime Database 网址 -
PROJECT_ID-default-rtdb.firebaseio.com
或PROJECT_ID-default-rtdb.REGION_CODE.firebasedatabase.app
- 默认 Cloud Storage 存储桶名称 -
PROJECT_ID.appspot.com
对于上述所有资源,您可以创建非默认实例。 非默认实例的公开可见名称可完全自定义。您可以将自定义网域关联到 Firebase 托管的网站,对 Realtime Database 实时数据库进行分片,并创建多个 Cloud Storage 存储桶(访问相应平台的“使用入门”页面)。
Firebase CLI 和项目 ID
在某些用例中,您可能有多个与同一本地应用目录关联的 Firebase 项目。在这些情况下,当您使用 Firebase CLI 时,您需要将 --project
标志与 firebase
命令一起传递,来传达您要与之交互的确切 Firebase 项目。
您还可以为每个 Firebase 项目设置项目别名,这样您就不必记住项目 ID 了。
API 调用和项目 ID
对于许多 API 调用,您需要提供项目的唯一标识符。尽管许多 API 都接受项目 ID,但我们建议您在对 Firebase、Google 或第三方服务进行 API 调用时使用项目编号。
如需详细了解如何使用项目标识符(尤其是项目编号),请参阅 Google 的 AIP 2510 标准。
查找项目 ID
Firebase 控制台:点击 项目设置。项目 ID 会显示在顶部窗格中。
Firebase CLI:运行
firebase projects:list
。系统会显示项目 ID 以及与您的帐号关联的所有 Firebase 项目。Firebase Management REST API:调用
projects.list
。 响应正文中的FirebaseProject
对象内包含项目 ID。
Firebase 配置文件和对象
当您在 Firebase 项目中注册应用时,Firebase 控制台会提供一个 Firebase 配置文件(Apple/Android 应用)或一个您直接添加到本地应用目录的配置对象(Web 应用)。
- 对于 Apple 应用,请添加
GoogleService-Info.plist
配置文件。 - 对于 Android 应用,请添加
google-services.json
配置文件。 - 对于 Web 应用,请添加 Firebase 配置对象。
您可以随时获取应用的 Firebase 配置文件或对象。
Firebase 配置文件或对象会将应用与特定 Firebase 项目及其资源(数据库、存储桶等)相关联。配置包括“Firebase 选项”,这是 Firebase 和 Google 服务与 Firebase 服务器 API 通信以及将客户端数据与 Firebase 项目和 Firebase 应用相关联所必需的一些参数。以下是至少需要的“Firebase 选项”:
API 密钥:在调用不需要访问私有用户数据的某些 API 时使用的简单加密字符串(示例值:
AIzaSyDOCAbC123dEf456GhI789jKl012-MnO
)项目 ID:项目在 Firebase 和 Google Cloud 各个位置中的唯一标识符,由用户指定。此标识符可能会出现在某些 Firebase 资源的网址或名称中,但通常应将其视为可方便引用项目的别名。(示例值:
myapp-project-123
)应用 ID(“AppID”):Firebase 应用在 Firebase 中的唯一标识符,其格式取决于具体平台:
- Firebase Apple 应用:
GOOGLE_APP_ID
(示例值:1:1234567890:ios:321abc456def7890
)
这不是 Apple 软件包 ID。 - Firebase Android 应用:
mobilesdk_app_id
(示例值:1:1234567890:android:321abc456def7890
)
这不是 Android 软件包名称或 Android 应用 ID。 - Firebase Web 应用:
appId
(示例值:1:65211879909:web:3ae38ef1cdcb2e01fe5f0c
)
- Firebase Apple 应用:
Firebase 配置文件或对象的内容被视为公开内容,包括特定于平台的应用 ID(Apple 软件包 ID 或 Android 软件包名称)以及特定于 Firebase 项目的值(例如 API 密钥、项目 ID、Realtime Database 网址和 Cloud Storage 存储桶名称)。考虑到这一情况,请使用 Firebase 安全规则来保护 Realtime Database、Cloud Firestore 和 Cloud Storage 中的数据及文件。
对于开源项目,我们通常建议不要将应用的 Firebase 配置文件或对象加入源代码控制系统中,因为在大多数情况下,用户应该创建自己的 Firebase 项目并将其应用指向自己的 Firebase 资源(通过自己的 Firebase 配置文件或对象)。
管理 Firebase 项目
请务必查看一般项目级最佳实践(在本页面底部),以了解可能会影响 Firebase 项目管理方式的注意事项。
项目管理工具
Firebase 控制台
Firebase 控制台为管理 Firebase 产品、应用和项目级设置提供了最丰富的环境。
控制台的左侧面板列出按顶级类别整理的 Firebase 产品。在左侧面板的顶部,点击 集成、访问权限和结算。
可以访问项目的设置。项目的设置包括控制台中间显示用于启动设置工作流以注册各种类型应用的按钮。在您开始使用 Firebase 后,控制台的主要区域会变为一个信息中心,显示您使用的产品的统计信息。
Firebase CLI(命令行工具)
Firebase 还提供 Firebase CLI 以用于配置和管理特定 Firebase 产品(例如 Firebase Hosting 和 Cloud Functions for Firebase)。
安装 CLI 后,您可以使用全局 firebase
命令。使用 CLI 可以将本地应用目录关联到 Firebase 项目,然后部署 Firebase 托管内容的新版本或函数更新。
Firebase Management REST API
使用 Firebase Management REST API,您可以通过编程方式管理 Firebase 项目。例如,您可以通过编程方式在项目中注册应用,或列出已注册的应用(iOS+ | Android | Web)。
一般最佳实践
将应用添加到项目中
确保一个项目中的所有应用在最终用户眼里是相同应用的不同平台变体。建议您在同一个 Firebase 项目中注册同一应用或游戏的 Apple、Android 和 Web 版本。项目中的所有应用通常共用相同的 Firebase 资源(数据库、存储桶等)。
如果您有定义了不同软件包 ID 或 Android 软件包名称的多个 build 变体,则可以在多个 Firebase 项目中分别注册每个变体。但是,如果您有共用相同 Firebase 资源的多个变体,请在同一个 Firebase 项目中注册这些变体。
以下是 Firebase 项目、应用和网站的一些一般限制:
每个帐号的项目数量
- Spark 定价方案 - 项目创建配额有限,只能创建较少的项目(通常约为 5-10 个)。
- Blaze 定价方案 - 只要关联的 Cloud Billing 帐号信誉良好,每个结算帐号的项目创建配额就会大幅增加。
大多数开发者很少需要关注项目创建配额限制,但如果您有需要,可以申请增加项目配额。
请注意,彻底删除某个项目需要 30 天时间,且在彻底删除前,待删除项目计入您的项目配额。
每个项目的应用数量
Firebase 将 Firebase 项目中的 Firebase 应用总数限制为 30 个。
您应该确保一个 Firebase 项目中的所有 Firebase 应用在最终用户眼里是相同应用针对不同平台的变体。详细了解以下多租户的最佳实践。
在常见问题解答中详细了解每个项目中应用数量的限制。
每个项目的 Firebase Hosting 网站数
Firebase Hosting 多网站功能支持每个项目最多 36 个网站。
多租户
建议您不要将多个不同的逻辑上独立的应用和/或网站关联到一个 Firebase 项目(通常称为“多租户”)。多租户可能会导致严重的配置和数据隐私问题,包括分析聚合、共享身份验证、过于复杂的数据库结构以及安全规则难度增加等意外问题。
通常,如果一组应用并非共用相同的数据和配置,则强烈建议您在不同的 Firebase 项目中注册每个应用。
例如,如果您开发一个白标应用,则每个有独立标签的应用都应该有自己的 Firebase 项目,但该标签的 Apple 平台版本和 Android 版本可以位于同一项目中。每个有独立标签的应用都不应该(出于保护隐私方面的原因)与其他应用共享数据。
发布您的应用
- 在 Google Cloud Console 中为您的项目设置预算提醒。
- 在 Firebase 控制台中监控“使用量和结算”信息中心,以全面了解您的项目在多个 Firebase 服务中的使用情况。
- 查看 Firebase 发布核对清单。