查看 2022 年 Google I/O 大会上介绍的 Firebase 新动态。了解详情

了解如何使用和管理 Firebase 的 API 密鑰

API 密鑰是一個唯一的字符串,用於在與 Firebase 和 Google 服務交互時將請求路由到您的 Firebase 項目。本頁面介紹了 API 密鑰的基本信息以及在 Firebase 應用中使用和管理 API 密鑰的最佳做法。

有關 API 密鑰和 Firebase 的一般信息

Firebase 的 API 密鑰與典型的 API 密鑰不同

與通常使用 API 密鑰的方式不同,Firebase 服務的 API 密鑰用於控制對後端資源的訪問;這只能通過 Firebase 安全規則(控制哪些用戶可以訪問資源)和 App Check(控制哪些應用可以訪問資源)來完成。

通常,您需要嚴格保護 API 密鑰(例如,通過使用保管庫服務或將密鑰設置為環境變量);但是,Firebase 服務的 API 密鑰可以包含在代碼或簽入的配置文件中。

儘管 Firebase 服務的 API 密鑰可以安全地包含在代碼中,但在某些特定情況下,您應該對 API 密鑰實施限制;例如,如果您使用 Firebase ML、帶有電子郵件/密碼登錄方法的 Firebase 身份驗證,或可計費的 Google Cloud API。稍後在此頁面上了解有關這些案例的更多信息。

創建 API 密鑰

一個 Firebase 項目可以有多個 API 密鑰,但每個 API 密鑰只能與一個 Firebase 項目相關聯。

Firebase 為您的 Firebase 應用自動創建的 API 密鑰

當您執行以下任一操作時,Firebase 會自動為您的項目創建 API 密鑰:

  • 創建一個 Firebase 項目 > 自動創建的Browser key
  • 創建 Firebase Apple 應用 > 自動創建的iOS key
  • 創建 Firebase Android 應用 > 自動創建的Android key

您還可以在Google Cloud Console中創建自己的 API 密鑰,例如用於開發或調試。在本頁稍後部分了解有關何時推薦此功能的更多信息。

查找您的 API 密鑰

您可以在 Google Cloud Console 的APIs & Services > Credentials面板中查看和管理您項目的所有API 密鑰。

您還可以在以下位置找到與 Firebase 應用自動匹配的 API 密鑰。默認情況下,同一平台(Apple vs Android vs Web)的所有項目 Firebase 應用程序都將使用相同的 API 密鑰。

  • Firebase Apple 應用程序— 在 Firebase 配置文件GoogleService-Info.plistAPI_KEY字段中查找應用程序的自動匹配 API 密鑰。

  • Firebase Android 應用程序— 在 Firebase 配置文件google-services.jsoncurrent_key字段中查找應用程序的自動匹配 API 密鑰。

  • Firebase Web 應用程序— 在 Firebase 配置對象的apiKey字段中查找應用程序的自動匹配 API 密鑰。

使用 API 密鑰

API 密鑰用於在與 Firebase/Google 服務交互時識別您的 Firebase 項目。具體來說,它們用於將 API 請求與您的項目相關聯以進行配額和計費。它們對於訪問公共數據也很有用。

例如,您可以通過將其值作為查詢參數傳遞給 REST API 調用來顯式使用 API 密鑰。此示例顯示您如何向動態鏈接鏈接縮短 API發出請求:

POST https://firebasedynamiclinks.googleapis.com/v1/shortLinks?key=API_KEY

當您的應用調用 Firebase API 時,您的應用將自動在 Firebase 配置文件/對像中查找您項目的 API 密鑰。但是,您可以使用不同的機制設置 API 密鑰,包括環境變量。

對 API 密鑰應用限制(推薦)

儘管不必將 Firebase 服務的 API 密鑰視為機密,但在某些特定情況下(見下文),您可能需要採取額外措施來保護您的項目不被濫用 API 密鑰。

如果您使用基於密碼的身份驗證,請收緊配額

如果您使用基於密碼的 Firebase 身份驗證並且有人掌握了您的 API 密鑰,那麼只要這些數據受Firebase 安全規則保護,他們將無法訪問您的任何 Firebase 項目的數據庫或 Cloud Storage 數據。但是,他們可以使用您的 API 密鑰訪問 Firebase 的身份驗證端點並對您的項目發出身份驗證請求。

為了減少有人濫用 API 密鑰來嘗試暴力攻擊的可能性,您可以收緊identitytoolkit.googleapis.com端點的默認配額,以反映您的應用程序的正常流量預期。請注意,如果您收緊此配額並且您的應用突然獲得用戶,您可能會出現登錄錯誤,直到您增加配額。您可以在Google Cloud Console中更改項目的 API 配額。

為特定類型的 API 使用單獨的受限 API 密鑰

雖然用於 Firebase 服務的 API 密鑰通常不需要被視為機密,但您應該對用於授予對您手動啟用的 Google Cloud API 訪問權限的 API 密鑰採取一些額外的預防措施。

如果您使用 Firebase 未自動啟用的 Google Cloud API(在任何平台上)(意味著您自己啟用了它),您應該考慮創建單獨的受限 API 密鑰以與這些 API 一起使用。如果 API 用於計費的 Google Cloud 服務,這一點尤其重要。

例如,如果您在 iOS 上使用 Firebase ML 的 Cloud Vision API,則應創建單獨的 API 密鑰,僅用於訪問 Cloud Vision API。

通過為非 Firebase API 使用單獨的受限 API 密鑰,您可以在必要時輪換或替換密鑰,並向 API 密鑰添加額外限制,而不會中斷您對 Firebase 服務的使用。

使用特定於環境的 API 密鑰(推薦)

如果您為不同的環境(例如登台和生產)設置不同的 Firebase 項目,則每個應用實例與其對應的 Firebase 項目進行交互非常重要。例如,您的暫存應用程序實例永遠不應與您的生產 Firebase 項目通信。這也意味著您的臨時應用程序需要使用與臨時 Firebase 項目關聯的 API 密鑰。

為了減少從開發到暫存再到生產的代碼更改問題​​,而不是將 API 密鑰包含在代碼本身中,將它們設置為環境變量或將它們包含在配置文件中。

請注意,如果您將 Firebase Local Emulator Suite 與 Firebase ML 一起用於開發,則必須創建並使用僅用於調試的 API 密鑰。 Firebase ML 文檔中提供了創建此類密鑰的說明。

常見問題