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

API 金鑰是一個唯一的字串,用於在與 Firebase 和 Google 服務互動時將請求路由到您的 Firebase 專案。本頁面介紹有關 API 金鑰的基本資訊以及透過 Firebase 應用程式使用和管理 API 金鑰的最佳實務。

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

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

與 API 金鑰的通常使用方式不同,Firebase 服務的 API 金鑰用於控制對後端資源的存取;這只能透過 Firebase 安全性規則(控制哪些使用者可以存取資源)和應用程式檢查(控制哪些應用程式可以存取資源)來完成。

通常,您需要嚴格保護 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 控制台中建立自己的 API 金鑰,例如用於開發或偵錯。稍後將在本頁了解有關何時建議這樣做的更多資訊。

尋找您的 API 金鑰

您可以在 Google Cloud 主控台的API 和服務 > 憑證面板中檢視和管理專案的所有API 金鑰。

您也可以在以下位置找到自動與 Firebase 應用程式相符的 API 金鑰。預設情況下,同一平台(Apple、Android 和 Web)的所有專案 Firebase 應用程式都將使用相同的 API 金鑰。

  • Firebase Apple 應用程式— 在 Firebase 設定檔GoogleService-Info.plist API_KEY欄位中尋找應用程式的自動比對 API 金鑰。

  • Firebase Android 應用程式— 在 Firebase 設定檔google-services.json current_key欄位中尋找應用程式的自動比對 API 金鑰。

  • Firebase Web 應用程式— 在 Firebase 設定物件的apiKey欄位中尋找應用程式的自動比對 API 金鑰。

使用 API 金鑰

API 金鑰用於在與 Firebase/Google 服務互動時識別您的 Firebase 專案。具體來說,它們用於將 API 請求與您的專案關聯以獲取配額和計費。它們對於存取公共資料也很有用。

例如,您可以透過將 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 專案的任何資料庫或雲端儲存資料。但是,他們可以使用您的 API 金鑰存取 Firebase 的身份驗證端點並對您的專案發出身份驗證請求。

為了減輕有人濫用 API 金鑰來嘗試暴力攻擊的可能性,您可以收緊identitytoolkit.googleapis.com端點的預設配額,以反映應用程式的正常流量預期。請注意,如果您收緊此配額並且您的應用程式突然獲得用戶,則您可能會遇到登入錯誤,直到您增加配額為止。您可以在Google Cloud 控制台中變更專案的 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 本機模擬器套件與 Firebase ML 一起使用進行開發,則必須建立並使用僅供偵錯的 API 金鑰。有關建立此類金鑰的說明,請參閱Firebase ML 文件

常見問題解答