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 專屬金鑰的操作說明
這些操作說明會介紹如何為名為 Super Service API 的虛擬 API 建立獨立的受限 API 金鑰。
步驟 1:將現有 API 金鑰設為禁止存取 Super Service API
開啟 Google Cloud 控制台的「憑證」頁面。系統顯示提示訊息時,請選取您的專案。
針對清單中的每個現有 API 金鑰,開啟編輯檢視畫面。
在「API 限制」部分,選取「限制金鑰」,然後將您希望 API 金鑰可存取的所有 API 新增至清單。請務必不要加入要另外建立 API 金鑰的 API (在本例中為 Super Service API)。
設定 API 金鑰的 API 限制時,您會明確聲明金鑰可存取的 API。根據預設,如果「API 限制」部分選取「不限制金鑰」,API 金鑰可用於存取專案啟用的任何 API。
現在,現有 API 金鑰不會授予 Super Service API 的存取權,但每個金鑰仍可存取您在API 限制清單中加入的任何 API。
步驟 2:建立並使用新的 API 金鑰來存取 Super Service API
返回「憑證」頁面。請務必選取 Firebase 專案。
依序按一下「建立憑證」>「API 金鑰」。記下新的 API 金鑰,然後按一下「限制金鑰」。
在「API 限制」部分中,選取「限制金鑰」,然後只將 Super Service API 新增至清單。
Forbidden: 403 POST https://example-service.googleapis.com/method: Requests to this API example-service.googleapis.com method google.example-service.rest.method are blocked.
應用程式用來呼叫 API 的 API 金鑰可能已套用「API 限制」,且該金鑰的許可清單未包含該 API。
如果您嘗試使用 Firebase 相關服務 / 產品時收到這項錯誤,請確認您使用的 API 金鑰已在金鑰的「API 限制」允許清單中加入所有必要 API。
如果您嘗試使用非 Firebase 服務時收到這個錯誤,強烈建議您為該服務和 API 建立新的 API 金鑰。Firebase API 金鑰只能用於 Firebase 服務 / 產品。進一步瞭解如何為特定類型的 API 建立個別的受限制 API 金鑰。
如何修正這項錯誤?「無法從伺服器擷取這項 Firebase 應用程式的評估 ID。」
您的 Web 應用程式使用的 API 金鑰可能已套用「API 限制」。如果是這種情況,請確認 Firebase Management API 是否在允許的 API 清單中。
我收到電子郵件或錯誤訊息,指出我的 API 金鑰無效。發生了什麼事?該如何解決這個問題?
以下是 API 金鑰無效的幾個常見原因:
API 金鑰已套用「API 金鑰限制」,因此無法與嘗試使用該金鑰的應用程式 (「應用程式限制」) 相符,或無法用於呼叫的 API (「API 限制」)。