瞭解如何使用及管理 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 控制台的「APIs & Services」(API 和服務) >「Credentials」(憑證) 面板中,查看及管理專案的所有 API 金鑰。

您也可以在下列位置,查看系統自動與 Firebase 應用程式配對的 API 金鑰。根據預設,專案中相同平台 (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 服務互動時,系統會使用 API 金鑰識別您的 Firebase 專案。具體來說,API 金鑰可用於將 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 Security Rules 保護,他們就無法存取任何 Firebase 專案的資料庫或 Cloud Storage 資料 。但他們可以使用您的 API 金鑰存取 Firebase 的驗證端點,並對您的專案提出驗證要求。

為防範有人濫用 API 金鑰嘗試暴力破解攻擊,您可以調低 identitytoolkit.googleapis.com 端點的預設配額,以反映應用程式的正常流量預期。請注意,如果調低配額後應用程式的使用者人數突然增加,您可能需要提高配額,才能解決登入錯誤。您可以在 Google Cloud 控制台中變更專案的 API 配額。

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

雖然用於 Firebase 服務的 API 金鑰通常不需要視為機密資訊,但搭配其他 Google Cloud API 使用的 API 金鑰,則應採取額外防護措施。

如果您使用 Google Cloud API (在任何平台上),但該 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 Local Emulator SuiteFirebase ML,就必須建立並使用僅供偵錯的 API 金鑰。如需建立這類金鑰的操作說明,請參閱 Firebase ML 說明文件

常見問題與疑難排解

常見問題

疑難排解