瞭解如何使用及管理 Firebase 的 API 金鑰

API 金鑰是一組專屬字串,可用於在與 Firebase 和 Google 服務互動時,將要求導向至 Firebase 專案。本頁面說明 API 金鑰的基本資訊,以及透過 Firebase 應用程式使用及管理 API 金鑰的最佳做法。

API 金鑰和 Firebase 的一般資訊

Firebase 的 API 金鑰與一般 API 金鑰不同

與 API 金鑰的一般用途不同,Firebase 服務的 API 金鑰用於控制後端資源的存取權;您只能使用 Firebase Security Rules (用於控制哪些使用者可以存取資源) 和 Firebase App Check (用於控制哪些應用程式可以存取資源) 來控制後端資源的存取權。

通常,您需要小心保護 API 金鑰 (例如使用保險庫服務或將金鑰設為環境變數);不過,Firebase 服務的 API 金鑰可納入程式碼或已簽入的設定檔。

雖然 Firebase 服務的 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.plistAPI_KEY 欄位中,找出自動比對的 API 金鑰。

  • Firebase Android 應用程式:在 Firebase 設定檔 google-services.jsoncurrent_key 欄位中,找出自動比對的 API 金鑰。

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

使用 API 金鑰

與 Firebase/Google 服務互動時,API 金鑰可用於識別您的 Firebase 專案。具體來說,這些金鑰可用於將 API 要求與您的專案配額和帳單相關聯。也適用於存取公開資料。

舉例來說,您可以將 API 金鑰的值做為查詢參數傳遞至 REST API 呼叫,藉此明確使用 API 金鑰。以下範例說明如何向 Dynamic Links 連結縮短器 API 提出要求:

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

當應用程式呼叫需要由行動/網頁端用戶端提供 API 金鑰的 Firebase API 時,應用程式會自動在 Firebase 設定檔案/物件中尋找專案的 API 金鑰。不過,您可以使用其他機制 (包括環境變數) 為應用程式提供 API 金鑰。

查看 API 金鑰並套用適當的限制 (建議)

雖然不必將 Firebase 服務的 API 金鑰視為機密,但您仍應按照本節所述,檢查並套用限制。

查看系統自動新增至 Firebase API 金鑰許可清單的 API

當 Firebase 在專案中建立 API 金鑰時,我們會自動為該金鑰新增「API 限制」加入此許可清單的 API 是 Firebase 相關 API,需要用戶端在呼叫時提供 API 金鑰。請注意,使用 Firebase 服務所需的大多數 API 其實不需要列入 API 金鑰的許可清單。

由於 Firebase 會為所有 Firebase 服務新增必要的 API,因此 API 金鑰的許可清單可能會包含您未使用的產品 API。您可以從許可清單中移除 API,但請務必小心,不要移除 Firebase 和您使用的 Firebase 服務所需的 API (請參閱每項服務 / 產品的Firebase 相關 API 清單,瞭解哪些 API 需要列入許可清單)。否則,呼叫 Firebase 服務時會發生錯誤。

如果使用密碼驗證的 Authentication,請縮減配額

如果您使用密碼式 Firebase Authentication,且有人取得您的 API 金鑰,他們將無法存取任何 Firebase 專案資料庫或 Cloud Storage 資料,前提是這些資料受到 Firebase Security Rules 保護。不過,他們可以使用您的 API 金鑰存取 Firebase 驗證端點,並針對您的專案提出驗證要求。

為降低有人濫用 API 金鑰嘗試暴力破解攻擊的可能性,您可以縮緊 identitytoolkit.googleapis.com 端點的預設配額,以反映應用程式預期的正常流量。請注意,如果您縮緊配額,而應用程式突然獲得大量使用者,您可能會收到登入錯誤,直到增加配額為止。您可以在 Google Cloud 控制台中變更專案的 API 配額。

針對任何非 Firebase 服務使用不同的受限 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 說明文件

常見問題與疑難排解

常見問題

疑難排解