瞭解及管理 Firebase 的 API 金鑰

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

如果您收到 Google Cloud 寄來的電子郵件,主旨為「Google Cloud 專案的 Google API 金鑰可公開存取」,且郵件中列出的 API 金鑰是您的 Firebase API 金鑰,請確認該 API 金鑰符合下列規定,才能安全地加入程式碼或設定檔。您可以在 Google Cloud 控制台的「APIs & Services」(API 和服務) > 「Credentials」(憑證) 頁面 中驗證下列項目。

  • 這是您用於 Firebase 應用程式的 API 金鑰,且「僅」用於 Firebase 服務。這些按鍵通常稱為 Browser key (auto created by Firebase)、Android key (auto created by Firebase) 或 iOS key (auto created by Firebase)。
  • 金鑰的「API 限制」許可清單中,包含所有必要的 Firebase 相關 API。
  • 「API 限制」許可清單中沒有其他 API。具體來說,清單不應包含 Generative Language API。

此外,請務必按照建議,為使用的 Firebase 產品採用 Firebase Security Rules 和 App Check。

如要進一步瞭解 Firebase 的 API 金鑰,並查看常見問題清單,請參閱「瞭解如何使用及管理 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 金鑰

如要查看及管理專案的「所有」API 金鑰,請前往 Google Cloud 控制台的「 APIs & Services」(API 和服務) >「 Credentials」(憑證) 頁面。

您也可以在下列位置,查看哪組 API 金鑰會自動與 Firebase 應用程式配對。根據預設,專案中相同平台 (Apple、Android 或網頁) 的所有 Firebase 應用程式,都會使用相同的 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 服務互動時,Firebase 的 API 金鑰可用來識別 Firebase 專案。具體來說,API 金鑰會將 API 要求與專案建立關聯,以便計算配額和帳單。也適合用來存取公開資料。

對絕大多數開發人員和用途而言,您不需要直接與這些 API 金鑰互動。相反地,當應用程式呼叫 Firebase API,而該 API 需要行動或網頁用戶端提供的 API 金鑰時,應用程式會自動在Firebase 設定中尋找 API 金鑰。當您將應用程式連結至 Firebase 時,這項設定會新增至應用程式的程式碼集。

請注意,您可以使用其他機制 (例如 Firebase 選項或環境變數),在應用程式中提供應用程式的 API 金鑰。

此外,對於 Firebase 服務的部分 REST API,您可能需要將 API 金鑰的值明確傳遞至呼叫中,做為查詢參數。以下範例說明如何使用 Firebase Authentication API 提出要求:

https://identitytoolkit.googleapis.com/v1/accounts:signInWithCustomToken?key=API_KEY

檢查並對 API 金鑰套用適當限制

請務必確保專案中的「所有」API 金鑰都設有適當的 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 Security Rules保護 Firebase 專案的資料庫或 Cloud Storage 資料,對方就無法存取這些資料。不過,他們可以使用您的 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 服務,這點就至關重要。特別是,請勿將 Gemini Developer API 加入公開 API 金鑰或用於其他服務的金鑰許可清單。

為非 Firebase API 使用獨立且受限制的 API 金鑰,您可以在必要時輪替或更換金鑰,並為 API 金鑰新增額外限制,而不會中斷 Firebase 服務的使用。

使用環境專屬 API 金鑰

如果您為不同環境 (例如測試和正式環境) 設定不同的 Firebase 專案,請務必讓每個應用程式執行個體與對應的 Firebase 專案互動。舉例來說,測試應用程式執行個體不應與正式版 Firebase 專案通訊。這也表示測試應用程式必須使用與測試 Firebase 專案相關聯的 API 金鑰。

為減少將程式碼變更從開發階段推送到測試階段,再推送到正式環境時發生的問題,請勿在程式碼中加入 API 金鑰,而是將金鑰設為環境變數,或加入設定檔。

常見問題與疑難排解

常見問題

疑難排解