Join us for Firebase Summit on November 10, 2021. Tune in to learn how Firebase can help you accelerate app development, release with confidence, and scale with ease. Register

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

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

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

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

不像如何API密鑰通常使用,火力地堡服務API密鑰不習慣到後端資源控制訪問;這只能通過 Firebase 安全規則(控制哪些用戶可以訪問資源)和 App Check(控制哪些應用程序可以訪問資源)來完成。

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

雖然火力地堡服務API密鑰安全的代碼,包括也有一些特殊情況時,你應該強制執行API密鑰的限制;例如,如果您使用 Firebase ML、通過電子郵件/密碼登錄方法的 Firebase 身份驗證或可計費的 Google Cloud API。稍後在此頁面上了解有關這些案例的更多信息。

創建 API 密鑰

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

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

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

  • 創建一個火力地堡項目> Browser key自動創建
  • 創建一個火力地堡iOS應用程序> iOS key自動創建
  • 創建一個火力地堡Android應用程序> Android key自動創建

您還可以創建在你自己的API密鑰谷歌雲端控制台,例如用於開發或調試。稍後在此頁面上了解有關何時可能會推薦此功能的更多信息。

查找您的 API 密鑰

您可以在查看和管理所有項目的API密鑰的API和服務>憑證面板在谷歌雲端控制台。

您還可以找到其API密鑰自動匹配到火力地堡應用在以下地方。默認情況下,所有項目的火力地堡應用為同一平台(iOS和Android手機,VS網絡)將使用相同的API密鑰。

  • 火力地堡iOS應用-查找在火力配置文件的應用程序的自動配對的API密鑰, GoogleService-Info.plist ,在API_KEY領域。

  • 火力地堡Android應用-查找在火力配置文件的應用程序的自動配對的API密鑰, google-services.json ,在current_key領域。

  • 火力地堡Web應用程序-找到在火力配置對象的應用程序的自動配對的API密鑰,在apiKey領域。

使用 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 密鑰。

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

如果您使用基於密碼的火力地堡認證和別人得到你的API密鑰的時候,就不能訪問任何你的火力地堡項目的數據庫或雲存儲數據,只要該數據由保護火力地堡的安全規則。但是,他們可以使用您的 API 密鑰訪問 Firebase 的身份驗證端點並對您的項目發出身份驗證請求。

為了減輕對可能有人可能會濫用API密鑰嘗試蠻力攻擊,可以收緊的默認配額identitytoolkit.googleapis.com端點,以反映您的應用程序的正常流量的預期。請注意,如果您收緊此配額並且您的應用突然獲得用戶,您可能會遇到登錄錯誤,直到您增加配額。您可以在更改項目的API配額谷歌雲端控制台

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

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

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

例如,如果你在iOS上使用火力地堡ML的雲願景的API,你應該創建單獨的API密鑰只使用訪問雲願景的API。

通過使用獨立的,受限制的API密鑰用於非火力地堡的API,你可以旋轉或在必要時更換鍵和添加到API密鑰附加限制而不破壞你的火力地堡服務使用。

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

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

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

請注意,如果您將 Firebase 本地模擬器套件與 Firebase ML 一起用於開發,則必須創建和使用僅用於調試的 API 密鑰。有關創建那種關鍵在發現火力地堡ML文檔

常見問題