API 金鑰是一組專屬字串,用於將要求轉送至 Firebase
專案。本頁面說明
基本介紹 API 金鑰,以及使用和
使用 Firebase 應用程式管理 API 金鑰。
以下是 Firebase 適用 API 金鑰的幾項重要事項:
Firebase 相關 API
API 金鑰僅用於識別 Firebase 專案或應用程式;
無權 呼叫 API (例如其他 API
允許)。Firebase 相關 API 的授權 會透過 Google Cloud IAM 權限、Firebase Security Rules 或 Firebase App Check 與 API 金鑰分開處理。因此,如果您只將 Firebase API 金鑰用於 Firebase 相關 API ,則可以將這些金鑰納入程式碼中。
建議您
詳閱並套用適當的限制
和上限 (包括 Firebase API 金鑰)。
具體來說,請將該金鑰限制於您實際使用的 API
並限製配額 (如適用)。請注意,
所有 Firebase 佈建
API 金鑰有「API 限制」預設套用規則
只 將 Firebase 佈建的 API 金鑰用於
Firebase 相關 API 。
針對所有其他 API (例如 Maps 的 Places API 或 Google AI Gemini API),請使用專屬 API 金鑰 。
強烈建議您使用 Firebase Security Rules 保護 Realtime Database 、Cloud Firestore 和 Cloud Storage 資料 。請勿只依賴 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 會自動為您的專案建立 API 金鑰
包括:
建立 Firebase 專案 >Browser key
自動建立
建立 Firebase Apple 應用程式 >iOS key
自動建立
建立 Firebase Android 應用程式 >Android key
自動建立
您也可以在 Google Cloud 控制台 中建立自己的 API 金鑰,例如用於開發或偵錯 。請參閱本頁後續內容,進一步瞭解何時建議使用這項功能。
找出 API 金鑰
您可以在 Google Cloud 主控台的「API 和服務」 >「憑證」 面板中,查看及管理專案的「所有」 API 金鑰。
您也可以查看哪些 API 金鑰會自動對應至
Firebase 應用程式 。根據預設,所有專案的 Firebase 應用程式 (適用於相同平台 ,例如 Apple、Android 和網頁) 都會使用相同的 API 金鑰。
Firebase Apple 應用程式 :在 Firebase 中尋找自動比對的 API 金鑰
設定檔 (GoogleService-Info.plist
)
API_KEY
欄位中。
Firebase Android 應用程式 — 在以下位置找出自動比對的 API 金鑰:
Firebase 設定檔 google-services.json
current_key
欄位中。
Firebase 網頁應用程式 :在 Firebase 中尋找自動比對的 API 金鑰
config 物件。apiKey
使用 API 金鑰
API 金鑰會在與以下使用者互動時識別您的 Firebase 專案
Firebase/Google 服務。具體來說,這些 ID 可用來連結 API 要求
即可。也適用於存取公開資料。
舉例來說,您可以將 API 金鑰的值做為查詢參數傳遞至 REST API 呼叫,藉此明確使用 API 金鑰。以下範例說明如何向 Dynamic Links 連結縮短器 API 提出要求:
POST https://firebasedynamiclinks.googleapis.com/v1/shortLinks?key=API_KEY
應用程式呼叫需要提供 API 金鑰的 Firebase API 時
透過行動裝置/網路用戶端,您的應用程式就會自動在
Firebase 設定檔/物件。不過,您可以
透過其他機制 (包括環境) 為您的應用程式提供 API 金鑰
變數。
查看 API 金鑰並套用適當的限制 (建議)
雖然不必將 Firebase 服務的 API 金鑰視為機密,但您仍應按照本節所述,檢查並套用限制。
對於正式版應用程式正在使用的 API 金鑰,請務必謹慎
變更其使用限製或限制您應該在
測試應用程式並使用測試 API 金鑰
變更正式版 API 金鑰的限製或限制。
,瞭解如何調查及移除這項存取權。
注意: 如果您用於 Firebase 服務的 API 金鑰設有「API 限制」
並且收到 API_KEY_SERVICE_BLOCKED
或 403 禁止的錯誤訊息,請確認
API 金鑰包含
金鑰的「API 限制」中包含必要 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 控制台 。
針對任何非 Firebase 服務,使用不同的受限制的 API 金鑰
雖然通常不需要將用於 Firebase 服務的 API 金鑰處理
視為秘密,您應該為自己使用的 API 金鑰採取一些額外預防措施
與其他 Google Cloud 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 專屬金鑰的操作說明
這些操作說明說明如何為名為 Super Service API
的假冒 API 建立個別的受限 API 金鑰。
開啟 Google Cloud 控制台的「憑證」 頁面。系統顯示提示時,請選取專案。
針對清單中的每個現有 API 金鑰,開啟編輯檢視畫面。
在「API 限制」 部分,選取「限制金鑰」 ,然後將
列出您想讓 API 金鑰存取的所有 API。請務必不 加入要建立專屬 API 金鑰的 API (在本例中為 Super Service API
)。
設定 API 金鑰的 API 限制 時,您會明確宣告金鑰可存取的 API。根據預設,
「API 限制」 專區已選取「不限制金鑰」 選項,也就是 API 金鑰
可用於存取專案已啟用的任何 API。
現有的 API 金鑰將不會授予 Super Service API
存取權,但每個金鑰仍可繼續用於您新增至 API 限制 清單的任何 API。
重要事項: 如果日後啟用其他 API,請務必將這些 API 加進適用 API 金鑰的 API 限制 清單。
步驟 2:建立並使用新的 API 金鑰來存取 Super Service API
返回「憑證」 頁面。確認您仍選取 Firebase 專案。
依序按一下「建立憑證」>「API 金鑰」 。記下新的 API 金鑰,然後點選「限制金鑰」 。
在「API 限制」 部分,選取「限制金鑰」 ,然後將
只 列出 Super Service API
。
這個新的 API 金鑰只會授予 Super Service API
存取權。
設定應用程式和服務,以便使用新的 API 金鑰。
使用環境專屬 API 金鑰 (建議)
如果您為不同的環境 (例如
測試和正式環境,請務必確保每個應用程式執行個體
對應的 Firebase 專案舉例來說,您的測試環境應用程式例項不應與實際環境的 Firebase 專案通訊。這也表示您的測試環境應用程式必須使用與測試環境 Firebase 專案相關聯的 API 金鑰。
如何減少從開發、測試到測試中程式碼變更
您的 API 金鑰 (請將金鑰設為
環境變數
請注意,如果您要使用 Firebase Local Emulator Suite 進行開發,並搭配使用 Firebase ML ,就必須建立並使用僅供偵錯的 API 金鑰。如需建立這類金鑰的操作說明,請參閱 Firebase ML 說明文件 。
常見問題和疑難排解
常見問題
Firebase 服務的 API 金鑰是否預設為受限?
是,根據預設,Firebase 自動佈建的所有 API 金鑰可與
Firebase 相關 API
「API 限制」
並自動套用這些最佳化建議詳情請參閱
Firebase 相關 API 清單
或一些人
這些新增至許可清單的 API 是由 Firebase 服務呼叫的 API
用戶端程式碼,並且需要 API 金鑰來識別 Firebase 專案,或
應用程式。請注意,使用 Firebase 服務所需的「大部分」 API 實際上並非
必須列在 API 金鑰的許可清單中。
由於 Firebase 會加入「所有」 Firebase 服務所需的 API,因此
API 金鑰的許可清單可能包含您未使用產品的 API。個人中心
可以將 API 從許可清單中移除,但必須小心不要移除
您所使用的 Firebase 和 Firebase 服務所需的 API (請參閱
Firebase 相關 API 清單
必須列入各項服務 / 產品的許可清單)。否則,呼叫 Firebase 服務時會發生錯誤。
重要事項: 所有 Firebase 相關 API 都不會使用 API 金鑰做為呼叫 API 的授權 。透過 API 呼叫傳遞的 API 金鑰僅適用於
Firebase 專案或應用程式的識別。
您可以在 Google Cloud 控制台的「API 和服務 」 >「憑證」 面板中,查看所有 API 金鑰及其「API 限制」。
請注意,Firebase 的「API 限制」套用方式如下:
自 2024 年 5 月起,Firebase 自動佈建的所有新 API 金鑰都會
會自動限制在
Firebase 相關 API 清單 。
2024 年 5 月,Firebase 既有的 API 金鑰和無限制 API 金鑰
只有
Firebase 相關 API 清單
加上 目前已啟用的任何專案 API。
Firebase 先前使用的任何現有 API 金鑰以及受限 的 API 金鑰
並未變更自動佈建設定。
未由 Firebase 自動佈建的任何現有 API 金鑰
已變更。
重要事項: 如果您在任何平台上使用非 Firebase 服務/產品的 Google Cloud API,強烈建議您建立個別的受限 API 金鑰 ,以便搭配這些 API 使用。
如何判斷哪個 API 金鑰與我的 Firebase 應用程式相關聯?
您可以使用下列任一選項來判斷哪個 API 金鑰
連結 Firebase 應用程式:
Firebase 個控制台
步行到settings
專案設定 、
然後向下捲動至「你的應用程式」 資訊卡。
選取感興趣的應用程式。
取得所需應用程式的 Firebase 設定檔/物件,然後
找出 API 金鑰:
Apple :下載 GoogleService-Info.plist
,然後找出
API_KEY
欄位
Android :下載 google-services.json
,找出所需應用程式的設定 (尋找其套件名稱),然後找出 current_key
欄位
網頁 :選取「Config」 選項,然後找出 apiKey
欄位
Firebase CLI
執行下列指令,取得所需應用程式的 Firebase 設定檔/物件
以下指令:
firebase apps:sdkconfig PLATFORM FIREBASE_APP_ID
PLATFORM (其中一個):IOS
| ANDROID
| WEB
FIREBASE_APP_ID :Firebase 指派給 Firebase 應用程式的專屬 ID (查看應用程式 ID )
在應用程式列印的 Firebase 設定中,找出其 API 金鑰:
在 Firebase 設定檔案/物件中,我可以為同一個 Firebase 應用程式列出兩個 API 金鑰嗎?
Firebase Apple 應用程式 :每個應用程式都有專屬的設定檔,且只能列出一個 API 金鑰。
Firebase Android 應用程式 — Firebase 專案中的所有 Android 應用程式都是
已列在相同設定檔中,且每個 應用程式只能有一個 API 金鑰
。這個設定檔中的每個應用程式可以列出不同的金鑰,
不過,
Firebase Web 應用程式 :每個應用程式都有自己的設定物件,且只能列出一個 API 金鑰。
不過,您可以 在單一應用程式中使用多個 API 金鑰。您必須提供機制,讓應用程式存取其他 API 金鑰,例如透過環境變數。其他 API 金鑰的存取機制無法依靠這些金鑰
Firebase 設定檔/物件中列出的 API 金鑰。
Firebase 如何得知要將哪個 API 金鑰與應用程式相符 (例如在 Firebase 設定檔案/物件中)?
首次取得應用程式的 Firebase 設定檔案/物件 時,Firebase 會檢查專案中是否有任何現有的 API 金鑰,且這些金鑰具有與應用程式相符的「應用程式限制」 (例如 Apple 應用程式的相符套件 ID)。
如果 Firebase 找不到任何相符的受限鍵,就會列在
Apple 應用程式的 iOS key
設定檔/物件,Android key
的
Android 應用程式和 Browser key
適用於網頁應用程式 (假設這些金鑰已存在)
且無「應用程式限制」防止模型比對出來
應用程式)。
我可以手動從 Firebase 設定檔/物件中刪除 API 金鑰和欄位嗎?
可以。您可以從設定檔/物件中手動刪除 API 金鑰。不過
您必須為應用程式提供其他機制存取 API 金鑰
例如透過環境變數否則,任何向 Firebase 服務發出的呼叫
失敗。
可以手動
可以使用其他 API 金鑰編輯 Firebase 設定檔/物件嗎?
可以,您可以手動編輯設定檔/物件,將不同的 API 金鑰與應用程式建立關聯。
您可以手動編輯 Firebase 設定檔/物件中的 API 金鑰,但通常不建議這麼做 。這會增加存取 Firebase 服務時發生問題的機率。不過,如果您選擇編輯設定檔/物件,請按照下列步驟操作:
請確認 API 金鑰的範圍適用於
設定檔/物件
請確認廣告本身
禁止 API 的「API 金鑰限制」
並無法搭配該應用程式使用
請確認 API 金鑰有適當的「API 限制」
。詳情請參閱
Firebase 相關 API 必須加入各個 API 的許可清單
Firebase 服務 / 產品。
請注意,如果您從控制台重新取得應用程式的設定檔/物件 ,系統一律會列出 Firebase 自動比對該應用程式的 API 金鑰 。因此,您需要視需要重複手動編輯。
我可以移動
要將 API 金鑰從某項 Firebase 專案轉移到另一個專案嗎?
否,API 金鑰只能識別特定專案,無法移至其他專案。
如果我
要刪除 Google Cloud 控制台中列出的 API 金鑰嗎?
如果刪除應用程式正在使用的 API 金鑰,該應用程式將無法呼叫 API。系統可能會顯示您嘗試使用的報表、電子郵件或錯誤
無效的 API 金鑰。
API 金鑰一經刪除即無法復原。
哪一個?
必須在「API 限制」頁面中使用 API要建立 Firebase API 金鑰的許可清單嗎?
如果是 Firebase API 金鑰,唯一需要套用至金鑰的 API
「API 限制」許可清單是指用戶端必須提供
以及 API 金鑰與呼叫請注意,只有少數 Firebase 相關 API 有這項規定。專案中啟用的大部分 Firebase 相關 API 不需要列入金鑰的「API 限制」許可清單。
重要事項: 沒有任何 Firebase 相關 API 使用 API 金鑰做為授權
呼叫 API透過 API 呼叫傳遞的 API 金鑰僅適用於
Firebase 專案或應用程式的識別 。
請參閱下表,判斷哪些 Firebase 相關 API 需要納入 Firebase API 金鑰的「API 限制」許可清單。別忘了
Firebase API 金鑰只能用於 Firebase 服務。進一步瞭解如何為特定類型的 API 建立個別的限制 API 金鑰 。
如要查看及管理專案的 API 金鑰,請前往
API 與服務 >憑證
設定 Google Cloud 控制台。
注意: 如果您在嘗試呼叫 Firebase 相關 API 時收到 API_KEY_SERVICE_BLOCKED
或 Forbidden 403 錯誤,且您使用的 API 金鑰已包含此表格中列出的所有必要 API,請與 Firebase 支援團隊 聯絡。
API 名稱 (服務名稱)
API 顯示名稱
相關聯的 Firebase 服務 / 產品
firebase.googleapis.com
Firebase Management API
所有產品
logging.googleapis.com
Cloud Logging API
所有產品
firebaseinstallations.googleapis.com
Firebase 安裝 API
Cloud Messaging 、Crashlytics 、In-App Messaging 、Performance Monitoring 、Remote Config 、Firebase ML
firebaseappcheck.googleapis.com
Firebase App Check API
App Check
firebaseappdistribution.googleapis.com
Firebase 應用程式發布 API
App Distribution
firebaseapptesters.googleapis.com
Firebase App Testers API
App Distribution
identitytoolkit.googleapis.com
Identity Toolkit API
Authentication
securetoken.googleapis.com
權杖服務 API
Authentication
firebaserules.googleapis.com *
Firebase Rules API
Cloud Firestore 、Cloud Storage 、Realtime Database
datastore.googleapis.com
Cloud Datastore API
Cloud Firestore
firestore.googleapis.com
Google Cloud Firestore API
Cloud Firestore
fcmregistrations.googleapis.com
FCM Registration API
Cloud Messaging
firebasestorage.googleapis.com
Cloud Storage for Firebase API
Cloud Storage
firebasedynamiclinks.googleapis.com
Firebase Dynamic Links API
Dynamic Links
firebasehosting.googleapis.com *
Firebase 託管 API
Hosting
firebaseinappmessaging.googleapis.com
Firebase In-App Messaging API
In-App Messaging
firebaseml.googleapis.com
Firebase ML API
Firebase ML
mlkit.googleapis.com **
ML Kit API
Firebase ML
mobilecrashreporting.googleapis.com
Mobile Crash Reporting API
Performance Monitoring
play.googleapis.com
Google Play Android Developer API
Performance Monitoring
firebaseremoteconfig.googleapis.com
Firebase 遠端設定 API
Performance Monitoring 、Remote Config
firebaseremoteconfigrealtime.googleapis.com
Firebase 遠端設定 Realtime API
Performance Monitoring 、Remote Config
cloudconfig.googleapis.com **
不適用
Remote Config
firebasedatabase.googleapis.com *
Firebase 即時資料庫 API
Realtime Database
firebasevertexai.googleapis.com
Firebase API 中的 Vertex AI
Vertex AI in Firebase
* 只有在您使用 Firebase API 金鑰搭配第三方工具,或直接透過 REST 存取 Firebase 服務/產品時,才需要提供這項資訊。
** 舊版產品的 SDK 為必要欄位。如果使用
SDK 是最新版,這個 API 不需要在金鑰的
加入許可清單。
疑難排解
如何修正 API_KEY_SERVICE_BLOCKED
或 Forbidden 403 錯誤,指出對此 API 的要求遭到封鎖?
如果您收到 API_KEY_SERVICE_BLOCKED
錯誤或類似下方的錯誤訊息,請按照本常見問題中的指示操作:
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 金鑰,並且
也能使用 Google Cloud CLI 或
Compute Engine APIFirebase API 金鑰只能用於 Firebase 服務 / 產品。
進一步瞭解如何為特定類型的 API 建立個別的限制 API 金鑰 。
該如何修正這個錯誤?「無法從
伺服器。」
網頁應用程式使用的 API 金鑰可能
「API 限制」
。如果是這種情況,請確認 Firebase Management API
是否在允許的 API 清單中
我收到了電子郵件或錯誤訊息
我的 API 金鑰無效。發生了什麼事?該如何解決這個問題?
以下是 API 金鑰無效的一些常見原因:
這組 API 金鑰已套用 「API 金鑰限制」 ,因此無法與嘗試使用金鑰的應用程式相符 (「應用程式限制」),或是無法用於呼叫的 API (「API 限制」)。
此 API 金鑰已從 Google Cloud 控制台中的專案刪除。
系統未為應用程式 Firebase 設定檔案/物件中列出的專案 ID 建立 API 金鑰。
如要修正這個問題,其中一種方法是取得應用程式的更新版本
Firebase 設定檔/物件
然後使用新的檔案/物件替換 舊的設定檔/物件。
傳送可供下載或顯示設定物件的設定檔之前
控制台,Firebase 會檢查列出的 API 金鑰
。