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

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

API 金鑰和 Firebase 的一般資訊

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

與一般使用的 API 金鑰不同,Firebase 服務的 API 金鑰「無法」用來控制後端資源的「存取權」;只能透過 Firebase 安全性規則 (控制哪些「使用者」可以存取資源) 和 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 網頁應用程式 — 在 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 金鑰視為密鑰,但您應按照本節說明,檢查並套用限制和限制。

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

Firebase 在專案中建立 API 金鑰時,會自動在該金鑰中新增 「API 限制」新增至這份許可清單的 API 是與 Firebase 相關的 API,需要用戶端在呼叫時一併提供 API 金鑰。請注意,使用 Firebase 服務所需的大多數 API 實際上都不需要列在 API 金鑰的許可清單中。

由於 Firebase 會為「所有」Firebase 服務新增必要的 API,因此 API 金鑰的許可清單可能包含您未使用產品的 API。您可以將 API 從許可清單中移除,但請務必避免移除 Firebase 和您使用的 Firebase 服務所需的 API 和 Firebase 服務 (請參閱每項服務 / 產品許可清單中的 Firebase 相關 API 清單)。否則,當您呼叫 Firebase 服務時就會發生錯誤。

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

如果您使用密碼式 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 說明文件

常見問題與疑難排解

常見問題

疑難排解