瞭解如何使用及管理 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 控制台建立自己的 API 金鑰,例如用於開發或偵錯。請參閱本頁內容,進一步瞭解何時可採用這項做法。

找出 API 金鑰

您可以在 Google Cloud 控制台的「API 和服務」>「憑證」面板中,查看及管理「所有」專案的 API 金鑰。

您也可以在下列位置查看自動比對到 Firebase 應用程式的 API 金鑰。根據預設,您的專案所有位於同一個平台的 Firebase 應用程式 (Apple、Android、網頁) 都會使用相同的 API 金鑰。

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

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

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

使用 API 金鑰

與 Firebase/Google 服務互動時,API 金鑰可用來識別您的 Firebase 專案。具體而言,這些要求是用於 將 API 要求與專案建立關聯 以獲得配額和帳單此外也適合用於存取公開資料

例如,您可以將 API 金鑰做為查詢參數傳遞至 REST API 呼叫,藉此明確使用 API 金鑰。以下範例說明如何向 Dynamic Links link shorter API 提出要求:

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

如果應用程式呼叫的 Firebase API 需要行動/網路用戶端提供的 API 金鑰,應用程式會自動在 Firebase 設定檔/物件中尋找專案 API 金鑰。不過,您可以使用環境變數等不同機制設定 API 金鑰。

套用 API 金鑰限制 (建議)

雖然您不一定要將 Firebase 服務的 API 金鑰視為密鑰,但在某些情況下,建議您採取其他措施來保護專案以免專案 API 金鑰濫用。

如果使用密碼式驗證,請提高配額

如果您使用密碼式 Firebase 驗證,且有人持有您的 API 金鑰,只要該資料受到 Firebase 安全性規則保護,該使用者就「無法」存取您 Firebase 專案的資料庫或 Cloud Storage 資料。不過,他們可以使用您的 API 金鑰存取 Firebase 的驗證端點,並對您的專案提出驗證要求。

為了降低有人濫用 API 金鑰嘗試暴力攻擊的可能性,您可以縮減 identitytoolkit.googleapis.com 端點的預設配額,以反映應用程式預期的流量。請注意,如果您放寬配額後,應用程式突然增加了使用者,系統可能會發生登入錯誤,直到您提高配額為止。您可以在 Google Cloud 控制台中變更專案的 API 配額。

針對任何非 Firebase 服務使用個別且受限制的 API 金鑰

雖然用於 Firebase 服務的 API 金鑰通常不必被視為密鑰,但仍建議您針對與其他 Google Cloud API 搭配使用的 API 金鑰採取額外的預防措施。

如果您使用的 Google Cloud API (在任何平台上) 並非用於 Firebase 服務 / 產品,強烈建議您另外建立受限制的 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 說明文件

常見問題與疑難排解

常見問題

疑難排解