了解 Firebase 项目

此页面简要概述了与 Firebase 项目有关的几个重要概念。您可以点击相应链接(如果有),以详细了解功能、服务甚至其他平台。在此页面的底部,您可以找到 Firebase 项目的一般最佳做法列表。

Firebase 项目、应用和产品之间的关系

Firebase 项目是 Firebase 的顶级实体。在项目中,您可以通过注册 iOS、Android 或 Web 应用来创建 Firebase 应用。在 Firebase 中注册应用后,您可以为任意数量的 Firebase 产品(如 Analytics、Cloud Firestore、Performance Monitoring 或 Remote Config)添加 Firebase SDK。

如需详细了解此过程,请参阅入门指南(iOS | Android | Web | Unity | C++)。

Firebase 项目与 Google Cloud Platform (GCP) 之间的关系

在 Firebase 控制台中创建新的 Firebase 项目时,您实际上是在后台创建 Google Cloud Platform (GCP) 项目。您可以将 GCP 项目视为数据、代码、配置和服务的虚拟容器。Firebase 项目就是一个具有其他 Firebase 特定配置和服务的 GCP 项目。 您甚至可以先创建 GCP 项目,然后再将 Firebase 添加到该项目中。

由于 Firebase 项目也是 GCP 项目,因此:

设置 Firebase 项目并注册应用

您可以在 Firebase 控制台中设置 Firebase 项目并注册应用(或者,对于高级使用场景,可以通过 Firebase Management REST APIFirebase CLI 执行这些操作)。在设置项目并注册应用时,您需要做出一些组织决策,并将特定于 Firebase 的配置信息添加到您的本地项目中。

在设置项目并注册应用之前,请务必查看一些一般项目级最佳做法(在本页面底部)。

项目名称

创建项目时,您需要提供项目名称。此标识符是项目在 Firebase 控制台GCP ConsoleFirebase CLI 中的名称,仅限内部使用。项目名称不会在任何公开可见的 Firebase 或 GCP 产品、服务或资源中公开;它只用来帮助您更轻松地区分多个项目。

您可以随时在 Firebase 控制台的 项目设置中修改项目名称。项目名称会显示在顶部窗格中。

项目编号

Firebase 项目(及其关联的 GCP 项目)有一个项目编号。这是由 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 项目(及其关联的 GCP 项目)有一个项目 ID。这是项目在 Firebase 和 GCP 中的唯一标识符,由用户定义。当您创建 Firebase 项目时,Firebase 会自动为该项目分配一个唯一 ID,但您可以在项目设置过程中对其进行修改。通常,应将此标识符视为可方便引用该项目的别名。

如果您删除项目,项目 ID 也会被删除,并且任何其他项目都不能再次使用此 ID。

Firebase 资源和项目 ID

项目 ID 会显示在公开可见的 Firebase 资源中,例如:

  • 默认托管子网域 - PROJECT_ID.web.appPROJECT_ID.firebaseapp.com
  • 默认实时数据库网址 - PROJECT_ID.firebaseio.com
  • 默认 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 配置文件(iOS/Android 应用)或一个您直接添加到本地应用目录的配置对象(Web 应用)。

  • 对于 iOS 应用,请添加 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 和 GCP 中的唯一标识符,由用户定义。此标识符可能会出现在某些 Firebase 资源的网址或名称中,但通常应将其视为可方便引用项目的别名。(示例值:myapp-project-123

  • 应用 ID(“AppID”):Firebase 应用在 Firebase 中的唯一标识符,其格式取决于具体平台:

    • Firebase iOS 应用: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 配置文件或对象的内容被视为公开内容,包括特定于平台的应用 ID(iOS 软件包 ID 或 Android 软件包名称)以及特定于 Firebase 项目的值(例如 API 密钥、项目 ID、Realtime Database 网址和 Storage 存储分区名称)。考虑到这一情况,请使用 Firebase 安全规则来保护 Realtime DatabaseCloud FirestoreCloud Storage 中的数据及文件。

对于开源项目,我们通常建议不要将应用的 Firebase 配置文件或对象加入源代码控制系统中,因为在大多数情况下,用户应该创建自己的 Firebase 项目并将其应用指向自己的 Firebase 资源(通过自己的 Firebase 配置文件或对象)。

管理 Firebase 项目

请务必查看一般项目级最佳做法(在本页面底部),以了解可能会影响 Firebase 项目管理方式的注意事项。

项目管理工具

Firebase 控制台

Firebase 控制台为管理 Firebase 产品、应用和项目级设置提供了最丰富的环境。

Firebase 控制台 - 项目概览屏幕

控制台的左侧面板列出按顶级类别整理的 Firebase 产品。在左侧面板的顶部,点击 可以访问项目的设置。项目的设置包括集成访问权限结算

控制台中间显示用于启动设置工作流以注册各种类型应用的按钮。在您开始使用 Firebase 后,控制台的主要区域会变为一个信息中心,显示您使用的产品的统计信息。

Firebase CLI(命令行工具)

Firebase 还提供 Firebase CLI 以用于配置和管理特定 Firebase 产品(例如 Firebase 托管和 Cloud Functions for Firebase)。

安装 CLI 后,您可以访问全局 firebase 命令。使用 CLI 可以将本地应用目录关联到 Firebase 项目,然后部署 Firebase 托管内容的新版本或函数更新。

Firebase Management REST API

使用 Firebase Management REST API,您可以通过编程方式管理 Firebase 项目。例如,您可以通过编程方式在项目中注册应用,或列出已注册的应用(iOS | Android | Web)。

一般最佳做法

将应用添加到项目中

确保一个项目中的所有应用在最终用户眼里是相同应用的不同平台变体。建议您在同一个 Firebase 项目中注册同一应用或游戏的 iOS、Android 和 Web 版本。项目中的所有应用通常共用相同的 Firebase 资源(数据库、存储分区等)。

如果您有多个定义了不同 iOS 软件包 ID 或 Android 软件包名称的构建变体,则可以在一个单独的 Firebase 项目中注册每个变体。但是,如果您有共用相同 Firebase 资源的变体,请在同一个 Firebase 项目中注册这些变体。

项目中的应用数量是没有限制的,但注册一个应用可能会创建一个或多个基础 OAuth 2.0 客户端 ID。在一个项目中大约只能创建 30 个客户端 ID。

多租户

建议您不要将多个不同的逻辑上独立的应用和/或网站关联到一个项目(通常称为“多租户”)。多租户可能会导致严重的配置和数据隐私问题,包括分析聚合、共享身份验证、过于复杂的数据库结构以及安全规则存在问题等意外问题。

通常,如果一组应用并非共用相同的数据和配置,则强烈建议您在不同的 Firebase 项目中注册每个应用

例如,如果您开发一个白标应用,则每个独立加标签的应用都应该有自己的 Firebase 项目。每个应用都不会也不应该(出于隐私方面的原因)与其他应用共用数据。

请注意 Firebase 项目、应用和网站的一些一般限制:

  • 每个帐号的项目数量

    • Spark 免费层级方案 - 只有少量项目(通常约为 5-10 个)拥有项目创建配额。
    • 付费方案 - 只要关联的 Cloud Billing 帐号信誉良好,每个结算帐号的项目创建配额就会大幅增加。

    大多数开发者很少关注项目创建配额限制,但如果您有需要,可以申请增加项目配额

    请注意,彻底删除某个项目需要 30 天时间,且在彻底删除前,待删除项目计入您的项目配额。

  • 每个项目的应用数量

    项目中的应用数量是没有限制的,但注册一个应用可能会创建一个或多个基础 OAuth 2.0 客户端 ID。在一个项目中只能创建大约 30 个客户端 ID。

  • 每个项目的托管网站数

    Firebase 托管多网站功能支持每个项目最多 36 个网站。

发布您的应用