有其他問題或未在下方找到您的問題嗎?請回報錯誤或要求新功能,並加入 Stack Overflow 討論。
Firebase 專案和 Firebase 應用程式
什麼是 Firebase 專案?
Firebase 專案是 Firebase 的頂層實體。您可以在專案中註冊 Apple、Android 或網頁應用程式。將應用程式註冊至 Firebase 後,您可以將特定產品的 Firebase SDK 新增至應用程式,例如 Analytics、Cloud Firestore、Crashlytics 或 Remote Config。
您應在單一 Firebase 專案中註冊 Apple、Android 和網頁應用程式變化版本。您可以使用多個 Firebase 專案來支援多個環境,例如開發、測試和正式環境。
如要進一步瞭解 Firebase 專案,請參考下列資源:
- 瞭解 Firebase 專案:簡要介紹 Firebase 專案的幾個重要概念,包括與 Google Cloud 的關係,以及專案、應用程式和資源的基本階層。
- 設定 Firebase 專案的一般最佳做法:提供設定 Firebase 專案的一般高層級最佳做法,以及將應用程式註冊至專案的做法,讓您能明確掌握使用不同環境的開發工作流程。
請注意,對於所有 Firebase 專案,Firebase 會在 Google Cloud 控制台的標籤頁面中,為您的專案自動新增 firebase:enabled
標籤。如要進一步瞭解這個標籤,請參閱常見問題。
什麼是 Google Cloud 組織?
Google Cloud 機構是 Google Cloud 專案 (包括 Firebase 專案) 的容器。這個階層可讓您更有效率地組織、管理存取權,以及稽核 Google Cloud 和 Firebase 專案。詳情請參閱「建立及管理機構」。
如何將 Firebase 新增至現有的 Google Cloud 專案?
您可能有透過 Google Cloud 控制台或 Google API 控制台管理的現有 Google Cloud 專案。
您可以使用下列任一選項,將 Firebase 新增至這些現有的 Google Cloud 專案:
- 使用 Firebase 主控台。
- 使用程式輔助選項:
- 呼叫 Firebase Management REST API 端點
projects.addFirebase
。 - 執行 Firebase CLI 指令
firebase projects:addfirebase
。 - 使用 Terraform。
- 呼叫 Firebase Management REST API 端點
進一步瞭解如何將 Firebase 新增至 Google Cloud 專案。
Firebase 與 Google Cloud 的整合功能如何運作?
Firebase 與 Google Cloud 緊密整合。Firebase 和 Google Cloud 會共用專案,因此專案可以啟用 Firebase 服務和 Google Cloud 服務。您可以透過 Firebase 主控台或 Google Cloud 主控台存取相同專案。具體違規事項如下:
- 某些 Firebase 產品 (例如 Cloud Storage for Firebase) 直接由 Google Cloud 提供支援。Google Cloud 支援的產品清單會隨著時間持續增加。
- 可共用多項設定,包括協作者和帳單資訊。Google Cloud您同時使用 Firebase 和 Google Cloud 的用量會顯示在同一張帳單上。
此外,升級至 Blaze 方案後,您就能以標準 Google Cloud 價格,直接在 Firebase 專案中使用 Google Cloud 的任何世界級基礎架構式服務和 API。您也可以直接將資料從 Google Cloud 匯出至 BigQuery 進行分析。詳情請參閱「連結 BigQuery 與 Firebase」。
與其他非同地部署的雲端服務相比,使用 Google Cloud 搭配 Firebase 可帶來許多安全性提升、延遲改善和節省時間的好處。詳情請參閱 Google Cloud 網站。
為什麼我的 Google Cloud 專案有 firebase:enabled
標籤?
在 Google Cloud 主控台的專案「標籤」頁面中,您可能會看到 firebase:enabled
標籤 (具體來說,Key
為 firebase
,Value
為 enabled
)。
Firebase 會自動新增這個標籤,因為您的專案是 Firebase 專案,也就是說,您的專案已啟用 Firebase 專屬設定和服務。進一步瞭解 Firebase 專案與 Google Cloud 之間的關係。
強烈建議您不要修改或刪除這個標籤。Firebase 和 Google Cloud 會使用這個標籤列出您的 Firebase 專案 (例如,使用 REST API projects.list
端點或 Firebase 主控台中的選單)。
請注意,手動將這個標籤新增至專案標籤清單,並不會為 Google Cloud 專案啟用 Firebase 專屬設定和服務。如要這樣做,您必須使用 Firebase 控制台 (或針對進階用途使用 Firebase 管理 REST API 或 Firebase CLI) 新增 Firebase。
為什麼我的 Firebase 專案未顯示在 Firebase 專案清單中?
如果您在下列位置找不到 Firebase 專案,這篇常見問題將提供相關說明:
- 在 Firebase 控制台中查看的專案清單中
- 在呼叫 REST API
projects.list
端點的回應中 - 執行 Firebase CLI 指令的回應中
firebase projects:list
請嘗試下列疑難排解步驟:
- 首先,請直接造訪專案的網址,嘗試存取專案。請使用下列格式:
https://console.firebase.google.com/project/PROJECT_ID/overview
- 如果您無法存取專案或收到權限錯誤,請檢查下列事項:
- 請確認您是使用具有專案存取權的 Google 帳戶登入 Firebase。您可以透過主控台右上角的帳戶顯示圖片,登入及登出 Firebase 主控台。
- 檢查是否可以在 Google Cloud 控制台中查看專案。
- 請確認專案在 Google Cloud 主控台的「Labels」頁面中,有專屬的
firebase:enabled
標籤。Firebase 和 Google Cloud 會使用這個標籤列出您的 Firebase 專案。如果您沒有看到這個標籤,但專案已啟用 Firebase Management API,請手動新增標籤 (具體來說,就是Key
的firebase
,以及Value
的enabled
)。 - 請確認您已獲派 基本 IAM 角色 (擁有者、編輯者、檢視者) 或具備 Firebase 相關權限的角色,例如 Firebase 預先定義的角色。您可以在 Google Cloud 主控台的「IAM」頁面中查看自己的角色。
- 如果您的專案屬於 Google Cloud 機構,您可能需要額外的權限,才能在 Firebase 主控台中查看列出的專案。請與管理 Google Cloud 組織的人員聯絡,要求對方授予您適當的角色,以便查看專案,例如瀏覽者角色。
如果上述疑難排解步驟無法讓您在 Firebase 專案清單中看到專案,請與 Firebase 支援團隊聯絡。
每個帳戶可以有多少個專案?
- Spark 定價方案:您的專案配額僅限於少數專案 (通常約 5 到 10 個)。
- Blaze 定價方案:只要 Cloud Billing 帳戶狀況良好,每個 Cloud Billing 帳戶的專案配額就會大幅增加。
專案配額上限對大多數開發人員來說不太重要,但如有需要,您可以要求增加專案配額。
請注意,專案必須經過 30 天才能徹底刪除,且在刪除前會計入配額。
一個 Firebase 專案最多可以有多少個 Firebase 應用程式?
Firebase 專案是 Apple、Android 和網頁版 Firebase 應用程式的容器。Firebase 限制 Firebase 專案中的 Firebase 應用程式總數為 30 個。
超過這個數量後,效能就會開始降低 (特別是 Google Analytics),如果應用程式數量更高,部分產品功能最終會停止運作。此外,如果您使用 Google 登入做為驗證服務供應器,系統會為專案中的每個應用程式建立基礎 OAuth 2.0 用戶端 ID。單一專案中最多可建立約 30 個用戶端 ID。
從使用者角度來看,請確保單一 Firebase 專案中的所有 Firebase 應用程式都是相同應用程式的平台變化版本。舉例來說,如果您開發白牌應用程式,每個獨立標記的應用程式都應有專屬的 Firebase 專案,但該標記的 Apple 和 Android 版本可位於同一專案中。如需更詳細的說明,請參閱設定 Firebase 專案的一般最佳做法。
如果您的專案需要超過 30 個應用程式 (極少見),可以要求提高應用程式上限。您必須將專案升級至 Blaze 定價方案,才能提出這項要求。請前往 Google Cloud 控制台提出申請,並進行評估。如要進一步瞭解配額管理,請參閱 Google Cloud 說明文件。
如果我將專案標示為「正式版」環境,會有什麼影響?
在 Firebase 主控台中,您可以為 Firebase 專案加上環境類型標記,例如「實際工作環境」或「未指定」(非正式版) 環境。
將專案標記為環境類型不會影響 Firebase 專案的運作方式或功能。不過,標記功能可協助您和團隊管理應用程式生命週期中的各種 Firebase 專案。
如果您將專案標記為正式環境,我們會在 Firebase 控制台中為專案新增亮色「正式環境」標記,提醒您任何變更都可能影響相關的正式版應用程式。未來,我們可能會為標示為正式環境的 Firebase 專案新增更多功能和安全防護機制。
如要變更 Firebase 專案的環境類型,請依序前往 settings 專案設定 >「一般」,然後在「環境」下方的「您的專案」資訊卡中,按一下 edit 變更環境類型。
我可以在哪裡找到 Firebase 應用程式的應用程式 ID?
在 Firebase 主控台中,前往 settings 專案設定。向下捲動至「您的應用程式」資訊卡,然後按一下所需的 Firebase 應用程式,即可查看應用程式資訊,包括「應用程式 ID」。
以下是一些 App ID 值範例:
-
Firebase iOS 應用程式:
1:1234567890:ios:321abc456def7890
-
Firebase Android 應用程式:
1:1234567890:android:321abc456def7890
-
Firebase 網頁應用程式:
1:1234567890:web:321abc456def7890
將 Google Play / AdMob / Google Ads / BigQuery 連結至我的 Firebase 專案或應用程式,需要哪些先決條件?
- 如要連結 Google Play 帳戶,您需要:
- 在 Firebase 擔任下列任一角色:擁有者或 Firebase 管理員
和 - 下列任一 Google Play 存取層級:帳戶擁有者或管理員
- 在 Firebase 擔任下列任一角色:擁有者或 Firebase 管理員
- 如要連結 AdMob 應用程式,您必須同時具備 Firebase 專案擁有者和 AdMob 管理員的身分。
- 如要連結 AdWords 帳戶,您必須同時是 Firebase 專案擁有者和 AdWords 管理員。
- 如要連結 BigQuery 專案,您必須是 Firebase 專案負責人。
應用程式應包含哪些開源通知?
在 Apple 平台上,Firebase Pod 會包含 NOTICES 檔案,其中包含相關項目。Firebase Android SDK 包含用於顯示授權資訊的 helper Activity
。
Firebase 專案的權限和存取權
如何指派專案成員的角色 (例如擁有者角色)?
如要管理指派給每位專案成員的角色,您必須是 Firebase 專案的擁有者 (或指派具有 resourcemanager.projects.setIamPolicy
權限的角色)。
您可以透過下列方式指派及管理角色:
- Firebase 主控台提供簡易方式,可在 settings >「Project settings」 的「Users and permissions」 分頁中,為專案成員指派角色。在 Firebase 控制台中,您可以指派任一基本角色 (擁有者、編輯者、檢視者)、Firebase 管理員/檢視者角色,或任一Firebase 預先定義的產品類別角色。
- Google Cloud 控制台提供一套廣泛的工具,可在「IAM」頁面中為專案成員指派角色。您也可以在 Cloud 控制台中建立及管理自訂角色,並授予服務帳戶專案存取權。
請注意,在 Google Cloud 控制台中,專案成員稱為「主要使用者」。
如果專案擁有者無法再執行擁有者的工作 (例如該人已離開貴公司),且您的專案並非透過 Google Cloud 組織管理 (請參閱下一節),您可以聯絡 Firebase 支援團隊,詢問如何申請 Firebase 專案存取權。
請注意,如果 Firebase 專案屬於 Google Cloud 機構,可能就沒有擁有者。如果找不到 Firebase 專案的擁有者,請與管理 Google Cloud 組織的人員聯絡,請對方指派專案擁有者。
如何尋找 Firebase 專案的擁有者?
你可以在下列位置查看專案成員和他們的角色:
- 如果您有權存取 Firebase 主控台中的專案,就可以在 Firebase 主控台的使用者和權限頁面中查看專案成員清單,包括擁有者。
- 如果您無法存取 Firebase 控制台中的專案,請確認您是否可以存取 Google Cloud 控制台中的專案。您可以在 Google Cloud 控制台的「IAM」頁面中,查看專案成員 (包括擁有者) 清單。
如果專案擁有者無法再執行擁有者的工作 (例如該人已離職),且您的專案並非透過 Google Cloud 組織管理 (請參閱下一節),您可以聯絡 Firebase 支援團隊,請他們指派臨時擁有者。
請注意,如果 Firebase 專案屬於 Google Cloud 機構,可能就沒有擁有者。相反地,管理 Google Cloud 機構的使用者可以執行許多擁有者可執行的工作。不過,如果要執行幾項專屬於擁有者的任務 (例如指派角色或管理 Google Analytics 資源),管理員可能需要指派自己為實際擁有者角色,才能執行這些任務。如果找不到 Firebase 專案的擁有者,請與管理 Google Cloud 組織的人員聯絡,請對方指派專案擁有者。
為什麼或何時應指派專案成員為擁有者?
為確保 Firebase 專案獲得妥善管理,該專案必須有擁有者。專案擁有者可以執行多項重要管理作業 (例如指派角色和管理 Google Analytics 資源),而 Firebase 支援團隊只能處理來自已證明的專案擁有者的管理要求。
為 Firebase 專案設定擁有者後,請務必隨時更新這些指派項目。
請注意,如果 Firebase 專案屬於 Google Cloud 機構,管理 Google Cloud 機構的使用者就能執行許多擁有者可執行的任務。不過,對於幾項專屬於擁有者的任務 (例如指派角色或管理 Google Analytics 屬性),管理員可能需要指派自己為實際擁有者角色,才能執行這些任務。
我認為自己沒有 Firebase 專案,但收到一封有關該專案的電子郵件。如何存取這個專案?
您收到的電子郵件應包含開啟 Firebase 專案的連結。 按一下電子郵件中的連結,即可在 Firebase 控制台中開啟專案。
如果無法透過連結開啟專案,請確認您是使用收到專案電子郵件的 Google 帳戶登入 Firebase。您可以透過主控台右上角的帳戶顯示圖片,登入及登出 Firebase 主控台。
請注意,如果您是 Google Cloud 機構的管理員,系統可能會通知您機構內 Firebase 專案的異動情形。不過,您可能沒有足夠的權限來開啟 Firebase 專案。在這種情況下,最簡單的解決方法就是指派實際擁有者角色給自己,以便開啟專案並執行必要操作。進一步瞭解指派擁有者角色的原因和時機。
平台和架構
請參閱特定平台的疑難排解與常見問題頁面,取得實用提示和常見問題的解答。
Firebase 控制台
哪些瀏覽器可用來存取 Firebase 控制台?
您可以透過最新版的熱門桌面瀏覽器存取 Firebase 主控台,例如 Chrome、Firefox、Safari 和 Edge。目前不完全支援行動瀏覽器,
我可以載入 Firebase 主控台,但為何無法找到或存取 Firebase 專案?
如果您遇到下列任一問題,這篇常見問題將適用於您:
- Firebase 主控台傳回錯誤頁面,指出您的專案可能不存在,或您沒有專案存取權。
- 即使您在控制台的搜尋欄位中輸入專案 ID 或專案名稱,Firebase 主控台也不會顯示專案。
請嘗試下列疑難排解步驟:
- 首先,請直接造訪專案的網址,嘗試存取專案。請使用下列格式:
https://console.firebase.google.com/project/PROJECT-ID/overview
- 如果您仍無法存取專案或收到權限錯誤,請檢查下列事項:
- 請確認您是使用具有專案存取權的 Google 帳戶登入 Firebase。您可以透過主控台右上角的帳戶顯示圖片,登入及登出 Firebase 主控台。
- 請確認專案已啟用 Firebase Management API。
- 請確認您已獲派 基本 IAM 角色 (擁有者、編輯者、檢視者) 或具備 Firebase 相關權限的角色,例如 Firebase 預先定義的角色。您可以在 Google Cloud 主控台的「IAM」頁面中查看自己的角色。
- 如果您的專案屬於 Google Cloud 機構,您可能需要額外權限,才能在 Firebase 主控台中查看列出的專案。請與管理 Google Cloud 組織的人員聯絡,要求對方授予您適當的角色,以便查看專案,例如瀏覽者角色。
如果上述疑難排解步驟都無法讓您找到或存取專案,請與 Firebase 支援團隊聯絡。
為什麼 Firebase 控制台無法載入?
如果遇到下列任一問題,這篇常見問題文章將適用於您:
- Firebase 主控台中的網頁永遠無法完成載入。
- 頁面中的資料無法如預期載入。
- 載入 Firebase 主控台時,您會收到瀏覽器錯誤訊息。
請嘗試下列疑難排解步驟:
- 查看 Firebase 狀態資訊主頁的「控制台」列,確認是否有任何服務中斷情形。
- 確認你使用的是支援的瀏覽器。
- 請嘗試在無痕模式或私密瀏覽視窗中載入 Firebase 控制台。
- 停用所有瀏覽器擴充功能。
- 確認網路連線未遭廣告攔截器、防毒軟體、Proxy、防火牆或其他軟體封鎖。
- 嘗試使用其他網路或裝置載入 Firebase 控制台。
- 如果使用 Chrome,請檢查開發人員工具主控台是否顯示任何錯誤。
如果上述疑難排解步驟都無法解決問題,請與 Firebase 支援團隊聯絡。
如何判斷 Firebase 主控台的語言?
Firebase 主控台的語言設定會根據您在 Google 帳戶設定中選取的語言而定。
如要變更語言偏好設定,請參閱「變更語言」一文。
Firebase 控制台支援下列語言:
- 英文
- 巴西葡萄牙文
- 法文
- 德文
- 印尼文
- 日文
- 韓文
- 俄語
- 簡體中文
- 西班牙文
- 繁體中文
Firebase 控制台支援哪些角色和權限?
Firebase 控制台和 Google Cloud 控制台使用相同的基礎角色和權限。如要進一步瞭解角色和權限,請參閱 Firebase IAM 說明文件。
Firebase 支援基本角色,包括擁有者、編輯者和檢視者:
- 專案擁有者可以將其他成員加入專案、設定整合 (將專案連結至 BigQuery 或 Slack 等服務),並擁有專案的完整編輯存取權。
- 專案編輯者具備專案的完整編輯存取權。
- 專案的檢視者只有專案的唯讀存取權。請注意,Firebase 主控台目前不會隱藏/停用專案檢視者的編輯 UI 控制項,但如果專案成員已指派檢視者角色,這些作業就會失敗。
Firebase 也支援以下功能:
- Firebase 預先定義角色:精選的 Firebase 專屬角色,可提供比「擁有者」、「編輯者」和「檢視者」等基本角色更精細的存取控管功能。
- 自訂角色:您自行建立的完全自訂 IAM 角色,可根據貴機構的特定需求,設定一組專屬權限。
Firebase Local Emulator Suite
為什麼模擬器套件記錄會顯示開頭為「Multiple projectIds are not recommended in single project mode」的錯誤?
這則訊息表示 Emulator Suite 偵測到它可能會使用不同的專案 ID 執行特定產品模擬器。這可能表示設定錯誤,並可能導致模擬器嘗試彼此通訊,以及您嘗試透過程式碼與模擬器互動時發生問題。如果專案 ID 不相符,系統通常會顯示資料遺失,因為在模擬器中儲存的資料會以專案 ID 做為索引,而互通性則取決於專案 ID 是否相符。
這一直是開發人員常見的疑惑來源,因此現在 Local Emulator Suite 預設只允許使用單一專案 ID 執行,除非您在 firebase.json
設定檔中指定其他情況。如果模擬器偵測到多個專案 ID,就會記錄警告,並可能擲回致命錯誤。
請檢查專案 ID 宣告是否有以下不相符之處:
-
指令列中設定的預設專案。根據預設,系統會在啟動時從使用
firebase init
或firebase use
所選專案中取得專案 ID。如要查看專案清單 (並查看已選取哪個專案),請使用firebase projects:list
。 -
單元測試。在呼叫規則單元測試程式庫方法
initializeTestEnvironment
或initializeTestApp
時,通常會指定專案 ID。其他測試程式碼可能會使用initializeApp(config)
進行初始化。 -
指令列
--project
標記。傳遞 Firebase CLI--project
標記會覆寫預設專案。您必須確保標記的值與單元測試和應用程式初始化的專案 ID 相符。
請查看以下平台專屬位置:
網頁 | JavaScript firebaseConfig 物件中的 projectId 屬性,用於 initializeApp 。 |
Android | google-services.json 設定檔中的 project_id 屬性。 |
Apple 平台 | GoogleService-Info.plist 設定檔中的 PROJECT_ID 屬性。 |
如要停用單一專案模式,請使用 singleProjectMode
鍵更新 firebase.json
:
{ "firestore": { ... }, "functions": { ... }, "hosting": { ... }, "emulators": { "singleProjectMode": false, "auth": { "port": 9099 }, "functions": { "port": 5001 }, ... } }
定價
如需特定產品的價格常見問題,請參閱本頁的產品專區或專屬產品說明文件。
哪些產品需要付費?哪些是免付費方案?
Firebase 付費基礎架構產品包括 Realtime Database、Cloud Storage for Firebase、Cloud Functions、Hosting、Test Lab 和電話驗證。我們提供免費方案,可使用所有這些功能。
Firebase 也提供許多免費產品:Analytics、Cloud Messaging、通知編輯器、Remote Config、App Indexing、Dynamic Links 和 Crash Reporting。使用這些產品時,只需遵守所有方案 (包括免費的 Spark 方案) 中產品的流量控制政策 (例如配額、公平存取權和其他服務保護措施)。此外,除了手機驗證功能外,所有 Authentication 功能均免費。
Firebase 是否提供付費產品的免付費試用抵免額?
您可以透過 Google Cloud 免費試用方案使用 Firebase 付費服務。Google Cloud 和 Firebase 的新使用者可享有 $300 美元的 Cloud Billing 免費抵免額,可以在 90 天的試用期內盡情體驗及評估 Google Cloud 和 Firebase 的各項產品和服務。
在 Google Cloud 免費試用期內,您將獲得免費試用 Cloud Billing 帳戶。在免費試用期間,所有使用該帳單帳戶的 Firebase 專案都會採用 Blaze 定價方案。
請放心,設定免費試用 Cloud Billing 帳戶並不會啟動收費機制。除非您將免費試用 Cloud Billing 帳戶升級為付費帳戶來明確啟用計費功能,否則我們不會向您收費。在試用期間內,您隨時可以升級為付費帳戶。升級後,您仍可繼續使用剩餘的抵免額 (90 天內)。
免費試用期結束後,您必須將專案降級至 Spark 定價方案,或是在 Firebase 控制台中設定 Blaze 定價方案,才能繼續使用 Firebase 專案。
進一步瞭解 Google Cloud 免費試用方案。
如何判斷我適合使用哪種價格方案?
Spark 定價方案
您可以使用免付費的 Spark 方案,免費開發應用程式。您可以使用所有免費的 Firebase 功能 (Analytics、通知編輯器、Crashlytics 等),以及大量付費基礎架構功能。不過,如果您在某個日曆月份中超過 Spark 方案的資源上限,應用程式會在該月剩餘期間關閉。此外,使用 Spark 方案時無法使用 Google Cloud 功能。
Blaze 定價方案
Blaze 方案專為正式版應用程式而設計。升級至 Blaze 方案之後,您也可以使用付費的 Google Cloud 功能擴充應用程式。您只需要為實際使用的資源付費,因此可以視需求調度資源。我們致力於讓 Blaze 方案的價格與業界領先的雲端服務供應商相競爭。
我可以隨時升級、降級或取消訂閱嗎?
可以,您隨時可以升級、降級或取消訂閱。請注意,我們不會針對降級或取消訂閱提供按比例退款。也就是說,如果您在帳單週期結束前降級或取消訂閱,仍須支付當月剩餘天數的費用。
Blaze 方案的免付費用量與 Spark 方案的免付費用量有何不同?
Blaze 方案的免費用量會每日計算。Cloud Functions、電話驗證和 Test Lab 的用量限制也與 Spark 方案不同。
對於 Cloud Functions,Blaze 方案的免付費用量計算方式是以 Cloud Billing 帳戶層級為準,而非專案層級,且有以下限制:
- 每月 200 萬次叫用
- 每月 40 萬 GB 秒
- 每月 200K CPU-秒
- 每月 5 GB 的網路輸出量
電話驗證的免付費用量會以每月計算。
對於 Test Lab,Blaze 方案的免付費用量有下列限制:
- 30 分鐘/天 (實體裝置)
- 60 分鐘/天 (虛擬裝置)
從 Spark 方案改用 Blaze 方案時,免付費用量配額是否會重設?
Blaze 方案包含 Spark 方案的免付費用量。改用 Blaze 方案時,免付費用量不會重設。
如果我在 Google Cloud 控制台中為該專案新增或移除帳單帳戶,會對我的 Firebase 專案造成什麼影響?
如果在 Google Cloud 主控台的專案中新增 Cloud Billing 帳戶,如果該專案目前使用的是 Spark 方案,系統就會自動將該專案升級為 Firebase Blaze 方案。
相反地,如果從 Google Cloud 主控台的專案中移除現有的有效 Cloud Billing 帳戶,該專案就會降級至 Firebase Spark 方案。
如何監控用量及帳單?
您可以在 Firebase 主控台的下列任一資訊主頁中,追蹤專案資源的用量:
我可以設定 Blaze 方案的用量上限嗎?
不行,目前無法設定 Blaze 方案用量上限。我們正在評估如何支援 Blaze 方案用量上限。
Blaze 使用者可以為專案或帳戶設定預算,並在支出接近上限時收到快訊。瞭解如何設定預算快訊。
我會收到哪種支援?
所有 Firebase 應用程式 (包括使用免費方案的應用程式) 均享有 Firebase 團隊在美國太平洋時間營業時間內提供的電子郵件支援服務。所有帳戶都能享有不限次數的帳單、帳戶、技術 (疑難排解) 問題和事件報表支援服務。
您是否提供開放原始碼、非營利或教育折扣?
任何類型的個人或機構 (包括非營利機構、學校和開放原始碼專案) 皆可使用 Spark 方案。由於這些方案已包含充裕配額,我們不會為開放原始碼、非營利或教育專案提供任何特別折扣或方案。
您是否提供企業合約、價格、支援或專屬基礎架構代管服務?
Blaze 方案適合各種規模的企業,且服務水準協議符合或超越雲端基礎架構的業界標準。不過,我們目前不提供企業合約、價格或支援服務,也不會為 Realtime Database 等服務提供專屬基礎架構代管服務 (也就是內部安裝)。我們正在努力新增部分功能。
您是否提供臨時性價格?我只想為一或兩項功能付費。
我們在 Blaze 方案中提供特別定價,您只需為實際使用的功能付費。
付費的 Firebase 方案如何與 Ads 搭配運作?付費方案是否提供免費廣告抵免額?
Firebase 定價方案與 Ads 分開,因此沒有免費的廣告抵免額。身為 Firebase 開發人員,您可以將 Ads 帳戶「連結」至 Firebase,以支援轉換追蹤。
所有廣告活動都會直接在 Ads 中管理,而 Ads 帳單則會透過 Ads 資訊主頁管理。
Flame 定價方案有何異動?
2020 年 1 月起,Flame 定價方案 (每月 $25 美元的額外配額) 已從新註冊方案中移除。現有方案使用者可在寬限期內將專案從 Flame 方案移出。2022 年 2 月,Flame 定價方案中剩餘的專案已降級至 Spark 定價方案。
因此,
- 現有的 Spark 和 Blaze 方案專案,以及任何新專案,都無法再轉換或註冊 Flame 方案。
- 如果您將現有的 Flame 方案專案移至其他定價方案,該專案就無法再改回 Flame 方案。
- 降級至 Spark 方案的專案可以升級至 Blaze 方案,以便恢復額外的付費服務。
- 說明文件中已移除 Flame 方案的參照。
您還有其他關於 Flame 方案停用的疑問嗎?請參閱下方的其他常見問題。
想瞭解 Firebase 提供的其他定價方案嗎?歡迎前往 Firebase 定價頁面瞭解詳情!如果您想開始將任何現有專案移至其他定價方案,可以前往專案的 Firebase 主控台進行這項操作。
關於 Flame 方案停用問題的其他常見問題
我有一個專案、程序或業務模式,需要固定的 Firebase 費用。該怎麼辦?
請註冊 Blaze 定價方案,並務必設定預算快訊。
請問我可以獲得建立新 Flame 企劃書專案的特殊存取權嗎?
否,Firebase 不會為專案提供特殊存取權,讓專案切換至或訂閱 Flame 方案。
我將 Flame 方案專案改為其他定價方案。如何將其改回?
您無法再改用 Flame 方案。如要存取 Flame 方案提供的服務,請確認您使用 Blaze 定價方案,並考慮為專案設定預算快訊。
我的專案已自動切換至其他定價方案,因為 Flame 方案即將停用。該怎麼辦?
如果專案需要超過 Spark 方案提供的配額,就必須將專案升級至 Blaze 定價方案。
為什麼要淘汰 Flame 方案?
多年下來,我們發現 Flame 方案的使用率持續下降,而且大多數使用該方案的專案並未充分發揮其價值。維持這個定價方案通常不符合成本效益,我們認為將資源用於其他 Firebase 計畫,可以為所有人提供更優質的服務。
隱私權
哪裡可以找到 Firebase 的隱私權與安全性資訊?
請參閱「Firebase 隱私權與安全性」頁面。
Firebase SDK 是否會記錄 Analytics 以外的任何使用/診斷資訊?
可以,目前僅適用於 iOS,但日後可能會有所變動。Firebase Apple 平台 SDK 預設會包含 FirebaseCoreDiagnostics
架構。Firebase 會使用這個架構收集 SDK 使用情形和診斷資訊,以便為日後的產品改善作業設定優先順序。FirebaseCoreDiagnostics
為選用項目,因此如果您不想傳送 Firebase 診斷記錄,可以取消應用程式與該程式庫的連結。您可以在 GitHub 上瀏覽完整來源,包括記錄的值。
A/B Testing
A/B Testing:我可以建立及執行多少個實驗?
每個專案最多可建立 300 個實驗,其中最多可包含 24 個執行中的實驗,其餘則為草稿或已完成的實驗。
A/B Testing:為什麼在取消連結專案與 Google Analytics 的連結後,我還是無法查看實驗?
如果連結至其他 Google Analytics 資源,您將無法再存取先前建立的實驗。如要重新存取先前的實驗,請將專案重新連結至實驗建立時已連結的 Google Analytics 資源。
A/B Testing:為什麼在建立遠端設定實驗時,我會收到「專案未連結至 Google Analytics」訊息?
如果您已連結 Firebase 和 Google Analytics,但仍看到 Google Analytics 未連結的訊息,請確認專案中的所有應用程式都有 Analytics 串流。目前,專案中的所有應用程式都必須連結至 Google Analytics 串流,才能使用 A/B 測試。
您可以在 Firebase 控制台的 Google Analytics 整合詳細資料頁面中找到所有有效串流的清單,方法是前往 settings「專案設定」chevron_rightchevron_right「Google Analytics」chevron_right「管理」。
只要為沒有 Google Analytics 串流的應用程式建立串流,即可解決問題。您可以透過下列幾種方式建立缺少應用程式的串流:
-
如果只有一或兩個應用程式缺少相關聯的 Google Analytics 串流,您可以選擇下列任一方法新增 Google Analytics 串流:
- 在 Firebase 控制台中刪除並重新新增任何沒有有效串流的應用程式。
- 在 Google Analytics 控制台中,依序選取「管理」和「資料串流」,然後點選「新增串流」,新增缺少的應用程式詳細資料,然後點選「註冊應用程式」。
-
如果缺少的應用程式串流超過幾個,取消連結並重新連結 Google Analytics 資源,是建立缺少的應用程式串流最快也最有效率的方法:
- 在 settings「專案設定」中,選取「整合」。
- 在「Google Analytics」資訊卡中,按一下「管理」,即可存取 Firebase 和 Google Analytics 設定。
- 請記下 Google Analytics 資源 ID 和已連結的 Google Analytics 帳戶。
- 按一下 more_vert「更多」,然後選取「將這項專案與 Analytics 取消連結」。
-
查看顯示的警告 (請放心,您會在下一個步驟重新連結相同的資源),然後點選「取消連結 Google Analytics」。
取消連結完成後,系統會將您重新導向至「整合」頁面。 - 在「Google Analytics」資訊卡中,按一下「啟用」,即可開始重新連結程序。
- 從「選取帳戶」清單中選取 Analytics 帳戶。
-
按一下「自動在這個帳戶中建立新資源」旁的 edit「編輯」,然後從隨即顯示的「Analytics 資源」清單中選取資源 ID。
畫面上會顯示專案中所有應用程式的清單。系統會列出每個應用程式現有的串流對應項目,如果應用程式沒有串流,系統會為其建立一個串流。 - 按一下「啟用 Google Analytics」,重新連結資源。
- 按一下「完成」。
如果在執行這些步驟後,仍無法使用遠端設定建立 A/B 版本測試,請 與 Firebase 支援團隊聯絡。
AdMob
AdMob:我可以將 Windows 應用程式連結至 Firebase 嗎?
不支援,目前不支援 Windows 應用程式。
AdMob:為什麼我無法透過 Firebase 控制台將應用程式連結至 AdMob?
您可以透過 AdMob 控制台,將 AdMob 應用程式連結至 Firebase 應用程式。 瞭解詳情。
AdMob:我需要哪些權限或存取權,才能將 Firebase 應用程式連結至 AdMob 應用程式?
如要進行這項連結,您需要具備下列存取權:
- AdMob:您必須是 AdMob 管理員。
- Firebase:您必須具備
firebase.links.create
權限,此權限包含在擁有者角色和Firebase 管理員角色中。 - Google Analytics:您必須是與 Firebase 專案相關聯資源的「編輯」或「管理使用者」角色。瞭解詳情。
AdMob:同一個 AdMob 帳戶中的多位使用者可以連結 AdMob 應用程式和 Firebase 應用程式嗎?
對於多使用者 AdMob 帳戶,只有建立第一個 Firebase 連結並接受 Firebase 服務條款的使用者,才能在 AdMob 應用程式和 Firebase 應用程式之間建立新連結。
AdMob:如要使用 AdMob,我應該使用哪些 SDK?
如要使用 AdMob,請一律使用本常見問題說明中所述的 Google Mobile Ads SDK。此外,如果您想收集 AdMob 的使用者指標,也可以選擇在應用程式中加入 Google Analytics 的 Firebase SDK。
- 適用於 iOS 專案:
按照 AdMob iOS 說明文件中的操作說明,匯入 Google Mobile Ads SDK。 - 適用於 Android 專案:
請將 Google Mobile Ads SDK 的依附元件新增至build.gradle
檔案:
implementation 'com.google.android.gms:play-services-ads:23.6.0'
- 針對 C++ 專案和 Unity 專案:請按照各自說明文件中的指示操作。
數據分析
Analytics:為什麼建議在使用 Firebase 產品時搭配 Google Analytics?
Google Analytics 是一款免費且無限制的數據分析解決方案,可搭配 Firebase 功能提供精闢的洞察資料。您可以查看 Crashlytics 中的事件記錄、FCM 中的通知成效、Dynamic Links 的深層連結成效,以及 Google Play 中的應用程式內購資料。這項功能可支援 Remote Config 中的進階指定目標對象、Remote Config 個人化設定等。
Google Analytics 是 Firebase 控制台中的一層智慧功能,可提供更實用的洞察資料,協助您開發高品質應用程式、擴展使用者數量及提高收益。
如要開始使用,請參閱說明文件。
Analytics:如何控制 Analytics 資料與其他 Firebase 服務的共用方式?
根據預設,您的 Google Analytics 資料會用於改善其他 Firebase 和 Google 功能。您隨時可以在專案設定中變更 Google Analytics 資料的共用方式。進一步瞭解資料共用設定。
Analytics:如何更新 Analytics 資源設定?
您可以透過 Google Analytics 資源的「管理」頁面更新資源設定,例如:
- 資料共用設定
- 資料保留設定
- 時區和貨幣設定
如要更新資源設定,請按照下列步驟操作:
iOS 應用程式中的 Analytics:如果沒有廣告歸因和廣告識別碼收集功能,是否可以安裝 Analytics?
可以,詳情請參閱「 設定資料收集和使用行為」頁面。
Analytics:2021 年 10 月的更新後,Google Analytics 部分有哪些變更?
如要查看這些變更的摘要,請參閱 Firebase 說明中心文章「Google Analytics for Firebase 中的全新 Google Analytics 4 功能」。
Analytics:為什麼在將 Firebase 與 Google Analytics 取消連結後,Firebase 主控台沒有顯示任何 Analytics 資料?
Analytics 資料位於 Google Analytics 資源中,而非 Firebase 專案中。如果您刪除或取消連結資源,Firebase 就無法存取 Analytics 資料,您會在 Firebase 控制台中看到空白的 Analytics 資訊主頁。請注意,由於資料仍位於先前已連結的資源中,您隨時可以將該資源重新連結至 Firebase,並在 Firebase 主控台中查看 Analytics 資料。
將全新 Google Analytics 帳戶 (以及新的 Google Analytics 資源) 連結至 Firebase 專案,會導致 Firebase 控制台的 Analytics 資訊主頁空白。不過,如果先前已連結的資源仍存在,您可以將現有資料從舊資源移至新資源。
Analytics:如果我的 Analytics 資源及其資料遭到刪除,有辦法復原嗎?
否。如果房源已刪除,就無法取消刪除房源,也無法擷取先前收集的 Analytics 資料。
如果您想再次開始使用 Google Analytics,可以將新資源或現有資源連結至 Firebase 專案。您可以在 Firebase 控制台或 Google Analytics 使用者介面中進行這項連結。進一步瞭解如何將 Google Analytics 資源連結至 Firebase 專案。
Analytics:如果 Analytics 資源已刪除,我可以將新的 Google Analytics 資源連結至 Firebase 專案,並再次使用 Analytics 嗎?
如果您想再次開始使用 Google Analytics,可以將新資源或現有資源連結至 Firebase 專案。您可以在 Firebase 控制台或 Google Analytics 使用者介面中進行這項連結。進一步瞭解如何將 Google Analytics 資源連結至 Firebase 專案。
請注意,由於所有 Analytics 資料都儲存在資源 (而非 Firebase 專案) 中,因此無法擷取先前收集的 Analytics 資料。
Analytics:刪除 Analytics 資源會對 Firebase 產品或整合的 Google 產品造成什麼影響?
多項 Firebase 產品都需要整合 Google Analytics。如果 Analytics 資源及其資料遭到刪除,您使用下列產品時會發生下列情況:
- Crashlytics:您將無法再看到未受當機情況影響的使用者、麵包屑記錄和/或速度快訊。
- Cloud Messaging 和 In-App Messaging:您無法再使用指定目標、廣告活動指標、目標對象區隔和數據分析標籤。
- Remote Config:您無法再使用目標對象明確的設定或個人化功能。
- A/B Testing:Google Analytics 會提供實驗評估資料,因此您無法再使用 A/B Testing。
- Dynamic Links:任何仰賴 Google Analytics 資料的功能都會中斷。
此外,下列整合功能也會受到影響:
- 您無法再將 Analytics 資料匯出至 BigQuery。
- 您無法再利用 Google Ads 整合或 Google AdMob 整合。
Analytics:如何區隔「未」符合某些條件的使用者?
您可以透過「負向指定」這些使用者來重新定義問題。舉例來說,您可以將問題重新定義為「不要向已購買商品的使用者放送廣告」,並建立這些使用者的目標對象。
Analytics:在 Google Analytics 介面中定義的目標對象和/或事件,是否也適用於 Firebase 控制台?
系統會同步處理您的目標對象和使用者屬性。部分功能 (例如區隔和封閉式漏斗) 需要使用 Google Analytics 介面。您可以透過 Firebase 控制台的深層連結,直接存取 Google Analytics 介面。
您在 Firebase 控制台中所做的任何變更,也可以在 Google Analytics 中執行,這些變更也會反映在 Firebase 中。
Authentication
Firebase Authentication:電話驗證功能支援哪些地區?
Firebase Authentication 支援全球的電話號碼驗證功能,但並非所有聯播網都能可靠地傳送驗證訊息。以下地區的傳送率相當高,應該可順利進行電話驗證。在某些地區,由於運送成功率不佳,因此無法使用部分貨運公司。
區域 | 程式碼 |
---|---|
廣告 | 安道爾 |
AE | 阿拉伯聯合大公國 |
AF | 阿富汗 |
AG | 安地卡及巴布達 |
AL | 阿爾巴尼亞 |
上午 | 亞美尼亞 |
AO | 安哥拉 |
AR | 阿根廷 |
AS | 美屬薩摩亞 |
AT | 奧地利 |
AU | 澳洲 |
AW | 阿魯巴 |
AZ | 亞塞拜然 |
BA | 波士尼亞與赫塞哥維納 |
BB | 巴貝多 |
BD | 孟加拉 |
BE | 比利時 |
BF | 布吉納法索 |
BG | 保加利亞 |
BJ | 貝南 |
BM | 百慕達 |
BN | 汶萊 |
BO | 玻利維亞 |
巴西 | 巴西 |
BS | 巴哈馬 |
BT | 不丹 |
BW | 波札那 |
BY | 白俄羅斯 |
BZ | 貝里斯 |
CA | 加拿大 |
CD | 剛果 (金夏沙) |
CF | 中非共和國 |
CG | 剛果 (布拉薩) |
CH | 瑞士 |
CI | 象牙海岸 |
CK | 庫克群島 |
CL | 智利 |
CM | 喀麥隆 |
CO | 哥倫比亞 |
CR | 哥斯大黎加 |
CV | 維德角 |
CW | 古拉索 |
CY | 賽普勒斯 |
CZ | 捷克共和國 |
DE | 德國 |
DJ | 吉布地 |
丹麥 | 丹麥 |
DM | 多米尼克 |
DO | 多明尼加共和國 |
DZ | 阿爾及利亞 |
EC | 厄瓜多 |
EG | 埃及 |
ES | 西班牙 |
ET | 衣索比亞 |
FI | 芬蘭 |
FJ | 斐濟 |
FK | 福克蘭群島 (馬爾維納斯) |
FM | 密克羅尼西亞聯邦 |
FO | 法羅群島 |
FR | 法國 |
正式發布版 | 加彭 |
GB | 英國 |
GD | 格瑞那達 |
GE | 喬治亞 |
進球 | 法屬圭亞那 |
GG | 根息 |
GH | 迦納 |
GI | 直布羅陀 |
GL | 格陵蘭 |
總經理 | 甘比亞 |
GP | 瓜地洛普 |
GQ | 赤道幾內亞 |
GR | 希臘 |
GT | 瓜地馬拉 |
GY | 蓋亞那 |
HK | 中國香港特別行政區 |
HN | 宏都拉斯 |
人資 | 克羅埃西亞 |
HT | 海地 |
HU | 匈牙利 |
ID | 印尼 |
IE | 愛爾蘭 |
IL | 以色列 |
IM | 曼島 |
印度 | 印度 |
IQ | 伊拉克 |
IT | 義大利 |
JE | 澤西島 |
JM | 牙買加 |
JO | 約旦 |
日本 | 日本 |
KE | 肯亞 |
KG | 吉爾吉斯 |
KH | 柬埔寨 |
KM | 葛摩 |
KN | 聖克里斯多福及尼維斯 |
KR | 南韓 |
KW | 科威特 |
KY | 開曼群島 |
KZ | 哈薩克 |
LA | 寮國 |
LB | 黎巴嫩 |
LC | 聖露西亞 |
LI | 列支敦斯登 |
LK | 斯里蘭卡 |
LS | 賴索托 |
LT | 立陶宛 |
LU | 盧森堡 |
LV | 拉脫維亞 |
LY | 利比亞 |
MA | 摩洛哥 |
MD | 摩爾多瓦 |
ME | 蒙特內哥羅 |
MF | 法屬聖馬丁 |
MG | 馬達加斯加 |
MK | 馬其頓共和國 |
MM | 緬甸 |
MN | 蒙古 |
MO | 中華人民共和國澳門特別行政區 |
MS | 蒙哲臘 |
MT | 馬爾他 |
MU | 模里西斯 |
MW | 馬拉威 |
MX | 墨西哥 |
MY | 馬來西亞 |
MZ | 莫三比克 |
不適用 | 納米比亞 |
NC | 新喀里多尼亞 |
東北 | 尼日 |
NF | 諾福克島 |
NG | 奈及利亞 |
NI | 尼加拉瓜 |
NL | 荷蘭 |
否 | 挪威 |
NP | 尼泊爾 |
NZ | 紐西蘭 |
OM | 阿曼 |
PA | 巴拿馬 |
PE | 秘魯 |
PG | 巴布亞紐幾內亞 |
PH | 菲律賓 |
PK | 巴基斯坦 |
PL | 波蘭 |
下午 | 聖皮埃與密克隆群島 |
PR | 波多黎各 |
PS | 巴勒斯坦領土 |
PT | 葡萄牙 |
PY | 巴拉圭 |
品質確保人員 | 卡達 |
RE | 留尼旺 |
RO | 羅馬尼亞 |
RS | 塞爾維亞 |
RU | 俄羅斯聯邦 |
RW | 盧安達 |
SA | 沙烏地阿拉伯 |
SC | 塞席爾 |
瑞典 | 瑞典 |
SG | 新加坡 |
SH | 聖赫勒拿島 |
SI | 斯洛維尼亞 |
SK | 斯洛伐克 |
SL | 獅子山 |
SN | 塞內加爾 |
SR | 蘇利南 |
ST | 聖多美普林西比 |
SV | 薩爾瓦多 |
SZ | 史瓦濟蘭 |
TC | 土克凱可群島 |
TG | 多哥 |
泰國 | 泰國 |
TL | 東帝汶 |
TM | 土庫曼 |
收件者 | 東加 |
TR | 土耳其 |
TT | 千里達及托巴哥 |
台灣 | 中華民國臺灣 |
TZ | 坦尚尼亞聯合共和國 |
通用 Analytics | 烏克蘭 |
UG | 烏干達 |
美國 | 美國 |
UY | 烏拉圭 |
UZ | 烏茲別克 |
VC | 聖文森及格瑞那丁 |
VE | 委內瑞拉 (玻利瓦共和國) |
VG | 英屬維京群島 |
VI | 美屬維京群島 |
VN | 越南 |
WS | 薩摩亞 |
YE | 葉門 |
YT | 馬約特 |
ZA | 南非 |
ZM | 尚比亞 |
ZW | 辛巴威 |
Firebase Authentication:Spark 方案的免費簡訊功能發生了什麼問題?
自 2024 年 9 月起,為提升電話驗證機制的安全性和服務品質,Firebase 專案必須連結至 Cloud Billing 帳戶,才能啟用及使用簡訊服務。
Firebase Authentication:如何在使用電話驗證時防止濫用簡訊?
如要保護專案免於遭到簡訊流量灌水和 API 濫用,請採取下列步驟:
考慮設定簡訊區域政策
-
找出傳送簡訊次數非常多,但驗證簡訊次數非常少 (或為零) 的地區。驗證/傳送比率就是成效率。由於 SMS 並非保證可送達的通訊協定,且部分地區可能會發生濫用行為,因此成功率通常介於 70% 至 85% 之間。如果成功率低於 50%,表示雖然傳送了許多簡訊,但成功登入的次數很少,這通常是惡意行為和簡訊流量灌水的常見指標。
使用簡訊區域政策,拒絕成效率偏低的簡訊區域,或是只允許特定區域 (如果您的應用程式只在特定市場發行)。
限制已授權的驗證網域
使用驗證設定資訊主頁管理授權網域。系統預設會將 localhost
網域新增至核准的驗證網域,以簡化開發作業。建議您從實際專案的授權網域中移除 localhost
,以免有心人士在他們的 localhost
上執行程式碼,進而存取您的實際專案。
啟用及強制執行 App Check
啟用 App Check,驗證要求僅來自與專案相關聯的應用程式,以保護專案免於遭到 API 濫用。
如要在 Firebase Authentication 中使用 App Check,您必須升級至 Firebase Authentication with Identity Platform。
請注意,您必須在 Firebase 主控台中強制啟用 App Check 驗證功能 (建議您在強制啟用前監控流量)。此外,請仔細檢查 reCAPTCHA Enterprise 核准的網站清單,確認該清單只包含您的正式網站,且在 App Check 中註冊至專案的應用程式清單正確無誤。
請注意,App Check 會斷言呼叫來自您註冊的其中一個應用程式,藉此防範自動化攻擊。這不會阻止使用者以非預期方式使用您的應用程式 (例如,啟動後就永遠不會完成產生傳送簡訊的登入流程)。
Firebase Authentication:是否支援將轉移至新電信業者的電話號碼進行電話驗證?
目前,從一間電信業者轉移到另一間的號碼,會導致所有簡訊無法傳送給這些使用者。目前沒有解決方法,Firebase 正在處理這個問題。
Firebase Authentication:為什麼我的 Android 應用程式會顯示以下錯誤:
Google sign in failed
?
Google sign in failed
如果收到以下錯誤訊息,請按照本常見問題中的疑難排解步驟操作:
GoogleFragment: Google sign in failed
com.google.android.gms.common.api.ApiException: 13: Unable to get token.
at
com.google.android.gms.internal.auth-api.zbay.getSignInCredentialFromIntent(com.google.android.gms:play-services-auth@@20.3.0:6)
確認已正確啟用 Google 登入功能做為驗證服務供應器:
在 Firebase 主控台中,開啟 Authentication 專區。
在「登入方式」分頁中,停用並重新啟用 Google 登入方式 (即使已啟用):
開啟 Google 登入方式,然後停用該方式,接著點選「儲存」。
重新開啟「Google」登入方式並啟用,然後按一下「儲存」。
請確認應用程式使用的是最新的 Firebase 設定檔 (
google-services.json
)。
取得應用程式的設定檔。檢查是否仍會收到錯誤訊息。如果是,請繼續進行下一個疑難排解步驟。
確認已安裝必要的基礎 OAuth 2.0 用戶端。
在 Google Cloud 控制台的「Credentials」頁面中,查看「OAuth 2.0 用戶端 ID」部分。
如果 OAuth 2.0 用戶端不存在 (且您已完成上述所有疑難排解步驟),請與支援團隊聯絡。
Firebase Authentication:為什麼我的 Apple 平台應用程式會出現以下錯誤:
You must specify <clientID> in <GIDConfiguration>
?
You must specify <clientID> in <GIDConfiguration>
如果收到以下錯誤訊息,請按照本常見問題中的疑難排解步驟操作:
You must specify |clientID| in |GIDConfiguration|
確認已正確啟用 Google 登入功能做為驗證服務供應器:
在 Firebase 主控台中,開啟 Authentication 專區。
在「登入方式」分頁中,停用並重新啟用 Google 登入方式 (即使已啟用):
開啟 Google 登入方式,然後停用該方式,接著點選「儲存」。
重新開啟「Google」登入方式並啟用,然後按一下「儲存」。
請確認應用程式使用的是最新的 Firebase 設定檔 (
GoogleService-Info.plist
)。
取得應用程式的設定檔。檢查是否仍會收到錯誤訊息。如果是,請繼續進行下一個疑難排解步驟。
確認已安裝必要的基礎 OAuth 2.0 用戶端。
在 Google Cloud 控制台的「Credentials」頁面中,查看「OAuth 2.0 用戶端 ID」部分。
如果 OAuth 2.0 用戶端不存在 (且您已完成上述所有疑難排解步驟),請與支援團隊聯絡。
Firebase Authentication:為什麼我的網頁應用程式會顯示以下錯誤:
AuthErrorCode.INVALID_OAUTH_CLIENT_ID
?
AuthErrorCode.INVALID_OAUTH_CLIENT_ID
如果收到以下錯誤訊息,請按照本常見問題中的疑難排解步驟操作:
AuthErrorCode.INVALID_OAUTH_CLIENT_ID
確認已正確啟用 Google 登入功能做為驗證服務供應器:
在 Firebase 主控台中,開啟 Authentication 專區。
在「登入方式」分頁中,停用並重新啟用 Google 登入方式 (即使已啟用):
開啟 Google 登入方式,然後停用該方式,接著點選「儲存」。
重新開啟「Google」登入方式並啟用,然後按一下「儲存」。
此外,在 Authentication 專區的 Google 登入提供者設定中,請確認 OAuth 用戶端 ID 和密碼與 Google Cloud 控制台「憑證」頁面中顯示的網路用戶端相符 (請查看「OAuth 2.0 用戶端 ID」專區)。
Firebase Authentication:在我的網頁應用程式中,為何透過重新導向登入時會失敗,並顯示以下錯誤訊息:
This domain YOUR_REDIRECT_DOMAIN is not
authorized to run this operation
?
This domain YOUR_REDIRECT_DOMAIN is not
authorized to run this operation
如果收到以下錯誤訊息,請按照本常見問題中的疑難排解步驟操作:
This domain YOUR_REDIRECT_DOMAIN is not authorized to run this operation.
這類錯誤最有可能是因為您的重新導向網域未列為 Firebase Authentication 的授權網域,或是您在 Firebase Authentication 服務中使用的 API 金鑰無效。
請先確認 YOUR_REDIRECT_DOMAIN 已加入 Firebase 專案的已授權網域清單。如果已列出重新導向網域,請繼續排解無效的 API 金鑰問題。
根據預設,Firebase Authentication JS SDK 會依據授權網域清單,使用 Firebase 專案的 API 金鑰 (標示為 Browser key
) 驗證登入重新導向網址是否有效。Authentication 會根據您存取 Authentication SDK 的方式取得此 API 金鑰:
如果您使用 Hosting 提供的 Auth 輔助程式,搭配 Authentication JS SDK 讓使用者登入,那麼 Firebase 每次部署至 Firebase Hosting 時,都會自動取得 API 金鑰和其他 Firebase 設定。請確認網頁應用程式
firebaseConfig
中的authDomain
已正確設定,以便使用該 Hosting 網站的其中一個網域。您可以前往https://authDomain__/firebase/init.json
確認這項資訊,並檢查projectId
是否與firebaseConfig
中的資訊相符。如果您自行代管登入程式碼,則可以使用
__/firebase/init.json
檔案,為自行代管的 Authentication JS SDK Redirect helper 提供 Firebase 設定。這個設定檔中列出的 API 金鑰和projectId
應與您的 網頁應用程式firebaseConfig
相符。
確認 API 金鑰未遭到刪除:前往 Google Cloud 控制台的 「API 和服務」>「憑證」面板,查看專案的所有 API 金鑰。
如果
Browser key
未遭到刪除,請檢查下列項目:請確認 Firebase Authentication API 位於可存取金鑰的允許 API 清單中 (進一步瞭解 API 金鑰的 API 限制)。
如果您自行代管登入程式碼,請確認
__/firebase/init.json
檔案中列出的 API 金鑰與 Cloud 控制台中的 API 金鑰相符。視需要修正檔案中的鍵,然後重新部署應用程式。如果
Browser key
已刪除,您可以請 Firebase 為您產生新的 API 金鑰:在 Firebase 控制台中依序前往 settings >「專案設定」,然後在「您的應用程式」部分,按一下您的網頁應用程式。這項操作會自動建立 API 金鑰,您可以在網頁應用程式的「SDK 設定和設定」部分中看到這組金鑰。
請注意,在 Cloud 控制台中,這組新的 API 金鑰不會稱為
Browser key
,而是會與 Firebase Web 應用程式的暱稱相同。如果您決定對這個新 API 金鑰新增 API 限制,請確認 Firebase Authentication API 位於允許的 API 清單中。建立新的 API 金鑰後,請完成下列適用的步驟:
如果您使用保留的 Hosting URL,請將應用程式重新部署至 Firebase,以便自動取得新的 API 金鑰和其他 Firebase 設定。
如果您自行代管登入程式碼,請複製新的 API 金鑰並加進
__/firebase/init.json
檔案,然後重新部署應用程式。
Firebase Authentication:如何手動建構 OAuth 網路用戶端?
開啟 Google Cloud 控制台的「憑證」頁面。
在頁面頂端依序選取「Create credentials」>「OAuth client ID」。
如果系統提示您設定同意聲明畫面,請按照畫面上的指示操作,然後繼續執行本常見問題的後續步驟。
建立 OAuth 網路用戶端:
在「應用程式類型」部分,選取「網頁應用程式」。
在「已授權的 JavaScript 來源」中,新增下列內容:
http://localhost
http://localhost:5000
https://PROJECT_ID.firebaseapp.com
https://PROJECT_ID.web.app
針對「已授權的重新導向 URI」,請新增下列內容:
https://PROJECT_ID.firebaseapp.com/__/auth/handler
https://PROJECT_ID.web.app/__/auth/handler
儲存 OAuth 用戶端。
將新的 OAuth 用戶端 ID 和用戶端密碼複製到剪貼簿。
在 Firebase 主控台中,開啟 Authentication 專區。
在「登入方式」分頁中,開啟「Google 登入」供應器,然後貼上您剛剛建構並從 Google Cloud 主控台複製的用戶端 ID 和密鑰。按一下「儲存」。
Firebase Authentication:如何為確認電子郵件範本決定 %APP_NAME%
,以便在使用者使用電子郵件地址和密碼註冊時,傳送給使用者?
在 2022 年 12 月之前,電子郵件範本中的 %APP_NAME%
會填入 OAuth 品牌名稱,而這項資訊會在 Android 應用程式註冊至 Firebase 專案時自動佈建。由於 OAuth 品牌僅在啟用 Google 登入時才會提供,因此以下說明如何判斷 %APP_NAME%
:
如果 OAuth 品牌名稱可用,電子郵件範本中的
%APP_NAME%
就是 OAuth 品牌名稱 (與 2022 年 12 月前相同)。如果 OAuth 品牌名稱「無法」使用,請參考下列說明,瞭解如何判斷電子郵件範本中的
%APP_NAME%
:對於網頁應用程式,
%APP_NAME%
會是預設 Firebase Hosting 網站名稱 (.firebaseapp.com
和.web.app
前方的值,通常是 Firebase 專案 ID)。行動應用程式:
如果要求中包含 Android 套件名稱或 iOS 軟體包 ID,
%APP_NAME%
就會是 Play 商店或 App Store 中使用的應用程式名稱。否則,
%APP_NAME%
會是預設 Firebase Hosting 網站名稱 (.firebaseapp.com
和.web.app
前面的值,通常是 Firebase 專案 ID)。
請注意,如果查詢預設 Firebase Hosting 網站名稱失敗,最終備用做法是使用 Firebase 專案 ID 做為
%APP_NAME%
。
Cloud Functions
Cloud Functions 執行階段支援
如何升級至最新的支援 Node.js 版本?
- 請確認您使用的是 Blaze 定價方案。
- 請確認您使用的是最新版 Firebase CLI。
- 更新函式
package.json
中的engines
欄位。 - 您也可以選擇使用 Firebase Local Emulator Suite 來測試變更。
- 重新部署所有函式。
如何確保我已將函式部署至特定 Node.js 執行階段?
在 Firebase 控制台中,前往「函式」資訊主頁,選取函式,然後查看「Additional details」下方的函式語言。
我使用 Firebase Extensions。我會受到 Cloud Functions 執行階段更新的影響嗎?
可以,由於擴充功能會使用 Cloud Functions,因此擴充功能的執行階段必須與 Cloud Functions 保持一致。
建議您定期更新專案中安裝的每個擴充功能至最新版本。您可以透過 Firebase 控制台或 Firebase CLI 升級專案的擴充功能。
Cloud Functions 定價
為什麼我需要帳單帳戶才能使用 Cloud Functions for Firebase?
Cloud Functions for Firebase 需要使用部分付費 Google 服務。使用 Firebase CLI 11.2.0 以上版本的新函式部署作業會依賴 Cloud Build 和 Artifact Registry。部署至舊版的應用程式會以相同方式使用 Cloud Build,但會使用 Container Registry 和 Cloud Storage 進行儲存,而非 Artifact Registry。除了現行定價之外,系統也會針對這些服務的用量收費。
Firebase CLI 11.2.0 以上版本的儲存空間
Artifact Registry 會提供函式執行的容器。Artifact Registry 提供前 500 MB 的免費空間,因此您第一次部署函式可能不會產生任何費用。超過此上限後,每 GB 額外儲存空間的月費為 $0.10 美元。
Firebase CLI 11.1.x 以下版本的儲存空間
對於部署至舊版的函式,Container Registry 會提供函式執行的容器。系統會針對部署函式所需的每個容器向您收費。您可能會發現系統會針對每個儲存的容器收取少許費用,例如 1 GB 儲存空間的月費為 $0.026 美元。
如要進一步瞭解帳單可能發生的變化,請參閱以下內容
- Cloud Functions 定價:現有的免付費方案維持不變。
- Cloud Build 定價: Cloud Build 提供免付費方案。
- Artifact Registry 定價。
- Container Registry 定價。
Cloud Functions for Firebase 是否仍有免費用量?
可以,在 Blaze 方案中,Cloud Functions 針對叫用、運算時間和網際網路流量提供免付費方案。每月享有免費 2,000,000 次叫用、400,000 GB/秒、200,000 CPU 使用秒數和 5 GB 的網際網路輸出流量。您只需要為超出這些門檻的用量付費。
超過前 500 MB 的免付費儲存空間後,每個部署作業都會產生小額費用,用於儲存函式容器的儲存空間。如果開發程序需要部署函式進行測試,您可以在開發期間使用 Firebase Local Emulator Suite,進一步降低成本。
請參閱 Firebase 定價方案和 Cloud Functions 定價示例情境。
Firebase 是否打算提高 Cloud Functions for Firebase 的配額和限制?
否。我們沒有計劃變更配額,但會移除建構時間上限。如果您達到 120 分鐘的每日建構配額,系統不會顯示錯誤或警告,而是會依照 Blaze 定價方案的條款向您收費。請參閱「配額與限制」。
我可以獲得 Google Cloud 的 $300 美元抵免額嗎?
可以,您可以在 Google Cloud 控制台建立 Cloud Billing 帳戶,以便獲得 $300 美元的抵免額,然後將該 Cloud Billing 帳戶連結至 Firebase 專案。
如要進一步瞭解Google Cloud信貸,請參閱這篇文章。
請注意,如果您這樣做,就必須在 Firebase 控制台中設定 Blaze 定價方案,才能讓專案在 $300 美元的抵免額用盡後繼續運作。
我想按照程式碼研究室的說明瞭解 Firebase。可以提供臨時帳單帳戶嗎?
很抱歉,您可以使用 Firebase 模擬器進行開發,而無須擁有 Cloud Billing 帳戶。或者,您也可以申請 Google Cloud 免費試用。如果您仍無法因這項異動付款,請與 Firebase 支援團隊聯絡。
我擔心帳單會變得非常龐大。
您可以在 Google Cloud 主控台設定預算快訊,協助控管費用。此外,您也可以設定限制,針對每個函式建立可產生帳單的執行個體數量。如要瞭解一般情境的費用,請參閱 Cloud Functions 定價示例。
如何查看目前的帳單費用?
在 Firebase 控制台中查看「用量與帳單」資訊主頁。
我使用 Firebase Extensions。我需要帳單帳戶嗎?
可以,由於擴充功能會使用 Cloud Functions,因此擴充功能的計費方式與其他函式相同。
如要使用擴充功能,您必須升級至 Blaze 定價方案。除了使用 Firebase 服務而產生的所有費用之外,你也必須為每個安裝的擴充功能耗用的 Firebase 資源支付小額費用 (通常每月約 $0.01 美元),即便擴充功能處於閒置狀態也一樣。
Cloud Messaging
Cloud Messaging:通知編寫器和 Cloud Messaging 有何不同?
Firebase Cloud Messaging 透過用戶端 SDK 和 HTTP 和 XMPP 伺服器通訊協定,提供完整的訊息傳遞功能。如果部署作業需要更複雜的訊息傳送功能,FCM 就是最佳選擇。
通知編寫器是建構於 Firebase Cloud Messaging 之上的輕量型無伺服器訊息傳送解決方案。通知編輯器提供易於使用的圖形控制台,並減少程式碼需求,讓使用者輕鬆傳送訊息,以便重新吸引及留住使用者、促進應用程式成長,以及支援行銷廣告活動。
功能 | 通知編輯器 | Cloud Messaging | |
---|---|---|---|
目標 | 單一裝置 | ||
訂閱主題的用戶端 (例如天氣) | |||
預先定義使用者區隔中的客戶 (應用程式、版本、語言) | |||
指定分析目標對象中的客戶 | |||
裝置群組中的用戶端 | |||
從用戶端到伺服器的上游 | |||
訊息類型 | 通知大小上限為 2kb | ||
資料訊息大小上限為 4 KB | |||
廣告放送 | 立即 | ||
未來的用戶端裝置當地時間 | |||
數據分析 | 內建的通知分析集合與漏斗分析 |
Cloud Messaging:Apple 已宣布,他們將淘汰 APN 的舊二進位通訊協定。我需要做些什麼嗎?
否。Firebase Cloud Messaging 已在 2017 年改用以 HTTP/2 為基礎的 APN 通訊協定。如果您使用 FCM 向 iOS 裝置傳送通知,則無須採取任何行動。
Cloud Messaging:我是否需要使用其他 Firebase 服務才能使用 FCM?
您可以使用 Firebase Cloud Messaging 做為獨立元件,方法與使用 GCM 時相同,不必使用其他 Firebase 服務。
Cloud Messaging:我是現有的 Google 雲端通訊 (GCM) 開發人員。我是否應改用 Firebase Cloud Messaging?
FCM 是 Firebase 品牌下的 GCM 新版本。它繼承了 GCM 的核心基礎架構,並提供新的 SDK,讓 Cloud Messaging 開發作業更輕鬆。
升級至 FCM SDK 的好處包括:
- 簡化用戶端開發作業。您不必再自行編寫註冊或訂閱重試邏輯。
- 立即可用的通知解決方案。您可以使用通知製作工具,這是一項無伺服器通知解決方案,內含可讓任何人根據 Google Analytics 的洞察資料,向特定目標對象傳送通知的網頁控制台。
Cloud Messaging:為什麼指定的裝置似乎無法收到訊息?
如果裝置似乎未成功收到訊息,請先檢查以下兩個可能的原因:
通知訊息的前景訊息處理程序。用戶端應用程式需要新增訊息處理邏輯,以便在應用程式位於裝置前景時處理通知訊息。請參閱 iOS 和 Android 的詳細說明。
網路防火牆限制。如果貴機構的防火牆限制了來自或傳往網際網路的流量,您必須設定防火牆,允許與 FCM 連線,讓 Firebase Cloud Messaging 用戶端應用程式能夠接收訊息。需要開啟的通訊埠如下:
- 5228
- 5229
- 5230
FCM 通常會使用 5228,但有時也會使用 5229 和 5230。FCM 不會提供特定 IP,因此您應允許防火牆接受連線至 Google ASN 15169 中所列 IP 區塊中所有 IP 位址的輸出連線。
Cloud Messaging:我在 Android 應用程式中實作了 onMessageReceived
,但未呼叫該函式。
應用程式處於背景時,系統工作列會顯示
通知訊息,且不會呼叫 onMessageReceived
。如果通知訊息含有資料酬載,系統會在系統匣中顯示通知訊息,且可從使用者輕觸通知時啟動的意圖中擷取通知訊息所含的資料。
詳情請參閱「接收及處理訊息」。
通知編輯器:通知編輯器與 Cloud Messaging 有何不同?
通知編寫器是建構於 Firebase Cloud Messaging 之上的輕量型無伺服器訊息傳送解決方案。通知編輯器提供易於使用的圖形控制台,並減少程式碼需求,讓使用者輕鬆傳送訊息,以便重新吸引及留住使用者、促進應用程式成長,以及支援行銷廣告活動。
Firebase Cloud Messaging 透過用戶端 SDK 和 HTTP 和 XMPP 伺服器通訊協定,提供完整的訊息傳遞功能。如果部署作業需要更複雜的訊息傳送功能,FCM 就是最佳選擇。
以下比較 Firebase Cloud Messaging 和 Notifications 編寫器提供的訊息傳送功能:
功能 | 通知編輯器 | Cloud Messaging | |
---|---|---|---|
目標 | 單一裝置 | ||
訂閱主題的用戶端 (例如天氣) | |||
預先定義使用者區隔中的客戶 (應用程式、版本、語言) | |||
指定分析目標對象中的客戶 | |||
裝置群組中的用戶端 | |||
從用戶端到伺服器的上游 | |||
訊息類型 | 通知大小上限為 2kb | ||
資料訊息大小上限為 4 KB | |||
廣告放送 | 立即 | ||
未來的用戶端裝置當地時間 | |||
數據分析 | 內建的通知分析集合與漏斗分析 |
Notifications 編寫器:我是現有的 Google Cloud Messaging (GCM) 開發人員,想使用 Notifications 編寫器。該怎麼辦?
通知製作工具是即用型解決方案,可讓任何人根據 Google Analytics 的洞察資料,向特定目標對象傳送通知。此外,通知製作工具會為每則訊息提供漏斗分析,方便您評估通知的成效。
如果您是現有的 GCM 開發人員,則必須從 GCM SDK 升級至 FCM SDK,才能使用通知編寫工具。請參閱遷移 Android 和 iOS 應用程式的指南。
FCM 功能將於 2023 年 6 月淘汰
哪些 FCM API 已於 2023 年 6 月 20 日淘汰?如果我正在使用這些 API,該怎麼辦?
下列 API/SDK 會受到停用作業的影響:
伺服器 API
API 名稱 | API 端點 | 對使用者的影響 | 敬請採取行動 |
---|---|---|---|
舊版 HTTP 通訊協定 | https://fcm.googleapis.com/fcm/send | 2024 年 6 月 21 日後,對該端點提出的要求就會失敗。 | 遷移至 HTTP v1 API。 |
舊版 XMPP 通訊協定 | fcm-xmpp.googleapis.com:5235 | 2024 年 6 月 21 日後,對該端點提出的要求就會失敗。 | 遷移至 HTTP v1 API。 |
執行個體 ID 伺服器 API | https://iid.googleapis.com/v1/web/iid | 2024 年 6 月 21 日後,對該端點提出的要求就會失敗。 | 使用 Web JS SDK 建立 FCM 網路註冊。 |
https://iid.googleapis.com/iid/* | 端點會繼續運作,但在 2024 年 6 月 21 日之後,將無法使用靜態伺服器金鑰進行驗證。 | 使用服務帳戶產生的 OAuth 2.0 存取權杖。 | |
裝置群組管理 API | https://fcm.googleapis.com/fcm/notification | 這個端點會繼續運作,但在 2024 年 6 月 21 日之後,就不會支援使用靜態伺服器金鑰進行驗證。 | 使用服務帳戶產生的 OAuth 2.0 存取權杖。 |
透過 XMPP 傳送上游訊息 | fcm-xmpp.googleapis.com:5235 | 2024 年 6 月 21 日之後,應用程式中的 FirebaseMessaging.send API 呼叫不會觸發上游訊息傳送至應用程式伺服器。 | 在伺服器邏輯中實作這項功能。舉例來說,部分開發人員會實作自己的 HTTP/gRPC 端點,並直接呼叫端點,將訊息從用戶端傳送至應用程式伺服器。如需使用 gRPC 實作上游訊息傳遞的範例,請參閱這篇gRPC 快速入門文章。 |
Batch Send API | https://fcm.googleapis.com/batch | 2024 年 6 月 21 日後,對該端點提出的要求就會失敗。 | 遷移至標準 HTTP v1 API 傳送方法,該方法支援用於多工處理的 HTTP/2。 |
Firebase Admin SDK API
API 名稱 | API 語言 | 對使用者的影響 | 敬請採取行動 |
---|---|---|---|
sendToDevice()
|
Node.js | 這個 API 會在 2024 年 6 月 21 日後停止運作,因為它會呼叫舊版 HTTP 傳送 API。 | 請使用 send() 方法。 |
sendToDeviceGroup()
|
Node.js | 這個 API 會在 2024 年 6 月 21 日後停止運作,因為它會呼叫舊版 HTTP 傳送 API。 | 請使用 send() 方法。 |
sendToTopic()
|
Node.js | 這個 API 會在 2024 年 6 月 21 日後停止運作,因為它會呼叫舊版 HTTP 傳送 API。 | 請使用 send() 方法。 |
sendToCondition()
|
Node.js | 這個 API 會在 2024 年 6 月 21 日後停止運作,因為它會呼叫舊版 HTTP 傳送 API。 | 請使用 send() 方法。 |
sendAll()/sendAllAsync()/send_all()/sendMulticast()/SendMulticastAsync()/send_multicast()
|
Node.js、Java、Python、Go、C# | 這些 API 會在 2024 年 6 月 21 日後停止運作,因為這些 API 會呼叫批次傳送 API。 | 升級至最新版 Firebase Admin SDK,並改用新版 API:sendEach()/
sendEachAsync()/send_each()/sendEachForMulticast()/sendEachForMulticastAsync()/
send_each_for_multicast() 。
請注意,新 API 不再呼叫已淘汰的批次傳送 API,因此可能會比舊 API 建立更多並行的 HTTP 連線。 |
用戶端 SDK
SDK 版本 | 對使用者的影響 | 敬請採取行動 |
---|---|---|
GCM SDK (已於 2018 年淘汰) | 2024 年 6 月 21 日之後,使用 GCM SDK 的應用程式將無法註冊權杖,也無法接收來自 FCM 的訊息。 | 如果您尚未將 Android SDK 升級至最新的 Firebase SDK,請進行升級。 |
JS SDK 版本 <7.0.0 (2019 年 7.0.0 版的破壞性變更) | 使用舊版 JS SDK 的網頁應用程式,在 2024 年 6 月 21 日後將無法註冊權杖。 | 將 Firebase Web SDK 升級至最新版本。 |
我是否會在 2024 年 6 月前看到服務降級?
否。您有 12 個月的時間 (2023 年 6 月 20 日 - 2024 年 6 月 21 日) 可以從舊版 API 遷移至新版 API,且不會導致服務降級。強烈建議您盡早規劃遷移作業,以免受到 2024 年 6 月 API 停用作業的影響。
2024 年 6 月後,您在使用上述 API/SDK 時,可能會發現錯誤增加或缺少功能 (詳情請參閱下一個常見問題)。
淘汰的 API 會在何時停用?
FCM 將從 2024 年 7 月 22 日開始逐步停用已淘汰的 API。在這個日期過後,已淘汰的服務將會經歷「閃爍」程序,要求數量增加時,就會傳回錯誤回應。在逐步降載期間,您可以預期下列行為和錯誤回應會隨著時間增加頻率:
類別 | 預期程序 |
---|---|
舊版 HTTP 通訊協定 | 要求遭到拒絕,並傳回 HTTP 代碼 301。 |
舊版 XMPP 通訊協定 | 要求遭到拒絕,並傳回錯誤代碼 302。 |
FCM 上游 | FCM 後端會悄悄捨棄訊息。 |
Batch Send API | 要求遭到拒絕,並傳回錯誤代碼 UNIMPLEMENTED 和錯誤訊息「The API is deprecated.」 |
GCM SDK - 註冊權杖 | 要求遭到拒絕,並傳回 HTTP 代碼 301。 |
GCM SDK - 傳送訊息 | 要求遭到拒絕,並傳回錯誤代碼 400 和錯誤訊息「V3 權杖已淘汰」。 |
JS SDK 版本 < 7.0.0 | 要求遭到拒絕,並傳回 HTTP 代碼 501。 |
使用伺服器金鑰存取 Instance ID 和裝置群組管理 API | 要求遭到拒絕,並傳回 HTTP 401 代碼。 |
OAuth 2.0 權杖和伺服器金鑰有何不同?
OAuth 2.0 權杖是從服務帳戶衍生的短期權杖。這是 Google 的標準驗證模式,比靜態伺服器金鑰更安全。
如要瞭解如何使用 Google 驗證程式庫取得權杖,請參閱「使用憑證鑄造存取權杖」一文。
請注意,如果您使用 OAuth 2.0 權杖向不同端點提出要求,要求標頭會有所不同。
- HTTP v1 API:
Authorization: Bearer $oauth_token
- Instance ID 伺服器 API 和 裝置群組管理 API:
Authorization: Bearer $oauth_token
access_token_auth: true
我可以一次將所有要求遷移至新 API 嗎?
建議您逐步增加新 API 的流量。如果您預計會定期傳送超過 600,000 則訊息/分鐘,請 與 Firebase 支援團隊聯絡,瞭解如何增加配額,或取得如何分散流量的建議。
傳送訊息至主題/裝置群組時,HTTP v1 API 與舊版 API 有何差異?
主題:使用 v1 API 時,您不需要在主題目標中加入「/topics/」前置字串。
裝置群組:您可以在 HTTP v1 API 中使用群組權杖做為權杖目標。不過,HTTP v1 API 不會在回應中傳回成功/失敗次數。建議您使用 FCM 主題,或自行管理裝置群組。
HTTP v1 API 是否支援在單一要求中傳送訊息至多個符記?
否。這項功能在舊版 HTTP API 中稱為「多播」,但 HTTP v1 API 不支援這項功能,因為該 API 的設計更適合擴充性。
如果端對端延遲是關鍵的使用情境,或是總分支大小很小 (少於 100 萬),Google 建議您使用 HTTP v1 API 傳送多個獨立要求。在 99.9% 的多播要求 (傳送的符記少於 100 個) 中,HTTP/2 上的 HTTP v1 API 效能相似。對於異常用途 (傳送 1000 個符記),其吞吐率最高可達三分之一,因此需要額外的並行作業,才能針對這種非典型用途進行最佳化。相較於舊版多播,使用者在使用 HTTP v1 API 時,可享有更可靠且可用性更高的體驗。
如果是傳輸量和傳出頻寬為優先考量的用途,或是總分支大小較大 (超過 100 萬),Google 建議使用主題訊息。雖然主題訊息需要一次性動作,才能讓收件者訂閱主題,但它最多可提供 每個專案 10,000 個 QPS 的發布率,且不設主題大小上限。
哪些版本的 Firebase Admin SDK 提供新的 API?
平台 | Firebase Admin SDK 版本 |
---|---|
Node.js | >=11.7.0 |
Python | >=6.2.0 |
Java | >=9.2.0 |
Go | >=4.12.0 |
.NET | >=2.4.0 |
批次傳送 API 和 HTTP v1 API 有何不同?
FCM 批次傳送 API 使用與 HTTP v1 API 相同的訊息格式和驗證機制。不過,它使用不同的端點。如要提高效率,建議您使用 HTTP/2,透過相同的 HTTP 連線向 HTTP v1 API 傳送多個要求。
如果無法存取專案,該怎麼辦?
如需協助,請與 Google Cloud 支援團隊聯絡。
新專案可以啟用舊版 Cloud Messaging API 嗎?
否。自 2024 年 5 月 20 日起,新專案將無法再啟用舊版 API。
何時可以停用舊版 Cloud Messaging API?
確認已完全遷移至 HTTP v1 API 後,您可以停用舊版 Cloud Messaging API (如果 API 已停用,頁面可能無法載入)。
FCM 配額和限制
如何在 2 分鐘內通知大量客戶?
很抱歉,我們無法支援此用途。請務必將流量分散在 5 分鐘內。
我的應用程式會通知使用者事件,且必須立即傳送這些訊息,以支援我的業務模式。我可以獲得更多配額嗎?
很抱歉,我們無法基於這個原因核准配額增加申請。請務必將流量分散在 5 分鐘內。
我的訊息是關於排定的活動。如何在每小時的開頭傳送所有流量?
建議您在活動開始前至少 5 分鐘開始傳送通知。
配額要求需要多久時間才能處理完畢?
這取決於您使用 FCM 的方式。無論如何,我們會在幾個工作天內回覆。在某些情況下,我們可能會就 FCM 使用情形和各種情況與您進行來回討論,這可能會延長處理程序。如果符合所有規定,大多數要求會在 2 週內處理完畢。
如何監控配額使用量?
請參閱 Google Cloud 指南,瞭解如何繪製及監控配額指標。
429 錯誤對我 / 我的商家來說很難處理。我可以取得豁免或額外配額,以免收到 429 錯誤嗎?
我們瞭解配額上限可能會造成困擾,但配額對於維持服務可靠性至關重要,因此我們無法核准豁免。
我可以為臨時活動申請更多配額嗎?
您可以要求額外配額,支援長達 1 個月的事件。請至少提前 1 個月提出要求,並提供活動開始和結束時間的詳細資料,FCM 會盡力滿足要求 (但無法保證一定會增加)。這些配額增量會在活動結束日期後還原。
我目前的配額會有所變動嗎?
雖然 Google 不會輕易採取這類行動,但為了保護系統的完整性,我們可能會視需要變更配額。在可行情況下,Google 會提前通知您這類異動。
Cloud Storage for Firebase
Cloud Storage for Firebase:為什麼我無法使用 Cloud Storage for Firebase?
Cloud Storage for Firebase 會在 App Engine 免費等級中建立預設值區。這樣一來,您就能快速開始使用 Firebase 和 Cloud Storage for Firebase,無須輸入信用卡或啟用 Cloud Billing 帳戶。您也可以輕鬆在 Firebase 和 Google Cloud 專案之間共用資料。
不過,有兩種已知情況無法建立這個值區,因此您無法使用 Cloud Storage for Firebase:
- 從 Google Cloud 匯入的專案,其中包含 App Engine 主/從 Datastore 應用程式。
-
從 Google Cloud 匯入的專案,其中包含含有網域前置字串的專案。例如:
domain.com:project-1234
。
目前沒有解決這些問題的因應措施,建議您在 Firebase 控制台中建立新專案,並在該專案中啟用 Cloud Storage for Firebase。
Cloud Storage for Firebase:為什麼在使用 Cloud Storage for Firebase API 時,我會收到有關服務帳戶權限和失敗的服務帳戶作業的錯誤代碼 412 回應?
您可能會收到 412 錯誤代碼,原因可能是您的專案未啟用 Cloud Storage for Firebase API,或是必要的服務帳戶缺少必要權限。
請參閱相關常見問題。
Cloud Storage for Firebase:在 Spark 方案專案中,我可以儲存可執行檔案嗎?
對於免付費 (Spark) 方案專案,Firebase 會透過 Cloud Storage for Firebase 和 Firebase Hosting 阻擋上傳和代管 Windows、Android 和 Apple 的特定可執行檔案類型。這項政策旨在防止平台上發生濫用行為。
2023 年 9 月 28 日當天或之後建立的所有 Spark 專案,都無法提供、託管及上傳禁止使用的檔案。對於在該日期前上傳檔案的現有 Spark 專案,仍可上傳及代管這類檔案。
這項限制適用於 Spark 方案專案。使用即付即用 (Blaze) 方案的專案不會受到影響。
以下檔案類型無法在 Firebase Hosting 和 Cloud Storage for Firebase 上代管:
- 副檔名為
.exe
、.dll
和.bat
的 Windows 檔案 - 副檔名為
.apk
的 Android 檔案 - 副檔名為
.ipa
的 Apple 平台檔案
我需要採取什麼行動?
如果您仍想在 2023 年 9 月 28 日之後託管這些檔案類型,請按照下列步驟操作:
- 代管服務:請先升級至 Blaze 方案,才能透過
firebase deploy
指令將這些檔案類型部署至 Firebase Hosting。 - 儲存空間:升級至 Blaze 方案,即可使用 GCS CLI、Firebase 主控台或 Google Cloud 主控台,將這些檔案類型上傳至您選擇的值區。
使用 Firebase 工具管理 Firebase Hosting 和 Cloud Storage 資源。
- 如要管理 Firebase Hosting 中的資源,請使用 Firebase 控制台刪除版本,請參閱本指南。
- 如要管理 Cloud Storage 中的資源,請前往專案中的儲存空間產品頁面。
- 在「檔案」分頁中,找出資料夾階層中要刪除的禁止刪除檔案,然後在面板左側檔案名稱旁的核取方塊中選取這些檔案。
- 按一下「Delete」,確認檔案已刪除。
如要進一步瞭解如何 使用 Firebase 工具管理代管資源,以及如何使用用戶端程式庫管理 Firebase 專用 Cloud Storage 儲存空間,請參閱說明文件。
Cloud Storage for Firebase:為何上傳和下載作業量會異常增加?
先前,系統無法正確計算對 Cloud Storage for Firebase API 的下載和上傳要求。我們已採取措施解決這項問題,自 2023 年 9 月 15 日起生效。
對於 Blaze 使用者,上傳和下載作業將開始計入月度帳單。對於 Spark 使用者,系統會開始將他們計入每月免費限制。
建議您監控用量頁面,查看是否有任何可能影響限制的用量增加情形。
Cloud Storage for Firebase:為什麼我會看到與使用 Cloud Storage for Firebase 的 Firebase 專案相關的新服務帳戶 ID?
Firebase 會使用服務帳戶運作及管理服務,而無須分享使用者憑證。建立 Firebase 專案時,您可能會發現專案中已有多個服務帳戶。
Cloud Storage for Firebase 使用的服務帳戶會限定在您的專案中,名稱為 service-PROJECT_NUMBER@gcp-sa-firebasestorage.iam.gserviceaccount.com
。
如果您在 2022 年 9 月 19 日前使用 Cloud Storage for Firebase,您可能會在先前已連結的 Cloud Storage 桶中看到名為 firebase-storage@system.gserviceaccount.com
的額外服務帳戶。自 2022 年 9 月 19 日起,我們將不再支援這個服務帳戶。
您可以在 Firebase 主控台的「Service accounts」(服務帳戶) 分頁中,查看與專案相關聯的所有服務帳戶。
新增服務帳戶
如果您先前已移除服務帳戶,或是專案中沒有服務帳戶,可以執行下列任一操作來新增帳戶。
- (建議) 自動化:使用 AddFirebase REST 端點,將儲存體重新匯入 Firebase。您只需要呼叫這個端點一次,而非為每個已連結的值區呼叫一次。
-
手動:請按照「建立及管理服務帳戶」一文中的步驟操作。
按照該指南操作,新增具有 IAM 角色
Cloud Storage for Firebase Service Agent
的服務帳戶,以及服務帳戶名稱service-PROJECT_NUMBER@gcp-sa-firebasestorage.iam.gserviceaccount.com
。
移除新的服務帳戶
我們強烈建議您不要移除服務帳戶,因為這可能會阻止應用程式存取您的 Cloud Storage 儲存桶。如要從專案中移除服務帳戶,請按照「停用服務帳戶」一文中的操作說明進行。
Cloud Storage for Firebase 定價
如何預測上傳和下載作業的收費金額?
請前往 Firebase 定價頁面,並使用 Blaze 方案計算機。計算工具會列出 Cloud Storage for Firebase 的所有用途類型。
使用滑桿輸入儲存空間值區的預期用量。計算機會估算每月帳單。
如果超過 Spark 方案的 Cloud Storage for Firebase 上傳、下載或儲存空間限制,會發生什麼情況?
如果您在 Spark 方案的專案中超過 Cloud Storage 的限制,結果會視您超出哪種限制而定:
- 如果您超過儲存 GB 數量上限,就無法再儲存該專案中的任何資料,除非您移除部分儲存資料,或升級至提供更多儲存空間 (或無限儲存空間) 的方案。
- 如果您超過下載 GB 數量上限,應用程式將無法下載更多資料,直到隔天 (美國太平洋時間午夜開始) 才可下載,除非您升級至限制較少或沒有限制的方案。
- 如果您超過上傳或下載作業限制,除非您升級至限制較少或沒有限制的方案,否則應用程式將無法上傳或下載更多資料,直到隔天 (美國太平洋時間午夜開始) 才可。
Crashlytics
如需實用提示和更多常見問題的解答,請前往Crashlytics疑難排解與常見問題頁面。
Dynamic Links
Dynamic Links:Firebase 未來是否有針對 Dynamic Links 推出新功能的計畫?
Dynamic Links:為何我的 Android 應用程式會兩次存取每個動態連結?
getInvitation
API 會清除已儲存的動態連結,以免重複存取。請務必在每個深層連結活動中,將 autoLaunchDeepLink
參數設為 false
來呼叫此 API,以便在活動在主要活動之外觸發時清除該參數。
Hosting
Hosting:在 Spark 方案專案中,我可以儲存可執行檔案嗎?
對於免付費 (Spark) 方案專案,Firebase 會透過 Cloud Storage for Firebase 和 Firebase Hosting 阻擋上傳和代管 Windows、Android 和 Apple 的特定可執行檔案類型。這項政策旨在防止平台上發生濫用行為。
2023 年 9 月 28 日當天或之後建立的所有 Spark 專案,都無法提供、託管及上傳禁止使用的檔案。對於在該日期前上傳檔案的現有 Spark 專案,仍可上傳及代管這類檔案。
這項限制適用於 Spark 方案專案。使用即付即用 (Blaze) 方案的專案不會受到影響。
以下檔案類型無法在 Firebase Hosting 和 Cloud Storage for Firebase 上代管:
- 副檔名為
.exe
、.dll
和.bat
的 Windows 檔案 - 副檔名為
.apk
的 Android 檔案 - 副檔名為
.ipa
的 Apple 平台檔案
我需要採取什麼行動?
如果您仍想在 2023 年 9 月 28 日之後託管這些檔案類型,請按照下列步驟操作:
- 代管服務:請先升級至 Blaze 方案,才能透過
firebase deploy
指令將這些檔案類型部署至 Firebase Hosting。 - 儲存空間:升級至 Blaze 方案,即可使用 GCS CLI、Firebase 主控台或 Google Cloud 主控台,將這些檔案類型上傳至您選擇的值區。
使用 Firebase 工具管理 Firebase Hosting 和 Cloud Storage 資源。
- 如要管理 Firebase Hosting 中的資源,請使用 Firebase 控制台刪除版本,請參閱本指南。
- 如要管理 Cloud Storage 中的資源,請前往專案中的儲存空間產品頁面。
- 在「檔案」分頁中,找出資料夾階層中要刪除的禁止刪除檔案,然後在面板左側檔案名稱旁的核取方塊中選取這些檔案。
- 按一下「Delete」,確認檔案已刪除。
如要進一步瞭解如何 使用 Firebase 工具管理代管資源,以及如何使用用戶端程式庫管理 Firebase 專用 Cloud Storage 儲存空間,請參閱說明文件。
Hosting:為什麼 Firebase 主控台的 Hosting 版本記錄表顯示的檔案數量,比本機專案實際擁有的數量還要多?
Firebase 會自動新增包含 Hosting 網站中繼資料的額外檔案,這些檔案會納入版本的總檔案數。
Hosting:我可以部署至 Firebase Hosting 的最大檔案大小為何?
Hosting 個別檔案的大小上限為 2 GB。
建議您使用 Cloud Storage 儲存較大的檔案,因為這項功能可為個別物件提供 TB 等級的大小限制。
Hosting:每個 Firebase 專案最多可以有多少個 Hosting 網站?
Firebase Hosting 多網站功能最多支援每個專案 36 個網站。
Performance Monitoring
如需實用提示和更多常見問題的解答,請前往Performance Monitoring疑難排解與常見問題頁面。
Performance Monitoring:我可以建立多少個自訂網址模式?
每個應用程式最多可建立 400 個自訂網址模式,每個應用程式網域最多可建立 100 個自訂網址模式。
Performance Monitoring: 為什麼無法即時顯示成效資料?
如要查看即時效能資料,請確認應用程式使用的 Performance Monitoring SDK 版本與即時資料處理相容。
- iOS:7.3.0 以上版本
- tvOS:8.9.0 以上版本
- Android:19.0.10 以上版本 (或 Firebase Android BoM 26.1.0 以上版本)
- 網頁:7.14.0 以上版本
請注意,我們一律建議您使用最新版 SDK,但上述任何版本都能讓 Performance Monitoring 以近乎即時的方式處理資料。
Realtime Database
Realtime Database:什麼是「同時資料庫連線」?
一個同時連線代表一個行動裝置、瀏覽器分頁或伺服器應用程式連線至資料庫。Firebase 會對應用程式資料庫的同時連線數量設下硬性限制。這些限制旨在保護 Firebase 和使用者免於遭受濫用行為的侵擾。
Spark 方案的上限為 100 個,無法提高。Flame 和 Blaze 方案的每個資料庫同時連線數上限為 200,000 個。
這項限制與應用程式的使用者總數不同,因為使用者並不會同時連線。如果您需要的同時連線數量超過 200,000 個,請參閱「 使用多個資料庫進行擴充」一文。
Realtime Database:Realtime Database 的縮放限制為何?
每個 Realtime Database 例項都有每秒寫入作業數量的限制。針對小型寫入作業,此限制約為每秒 1000 次寫入作業。如果您即將達到這個上限, 使用多路更新功能進行批次作業有助於提高輸送量。
此外,每個資料庫執行個體都有同時資料庫連線數量的上限。我們的預設限制對大多數應用程式來說都足夠寬鬆。如果您要建構需要額外規模的應用程式,可能需要在多個資料庫執行個體中分割應用程式,以便增加規模。您也可以考慮使用 Cloud Firestore 做為其他資料庫。
Realtime Database:如果我超過 Realtime Database 用量限制,該怎麼辦?
如果您在 Firebase 控制台收到電子郵件快訊或通知,指出您已超過 Realtime Database 用量限制,可以根據超出用量限制的情況採取行動。如要查看 Realtime Database 用量,請前往 Firebase 主控台的 Realtime Database「用量」資訊主頁。
如果您已超過下載限制,可以升級 Firebase 定價方案,或是等到下一個帳單週期開始時,再等待下載限制重設。如要減少下載次數,請嘗試下列步驟:
- 新增查詢,限制監聽作業傳回的資料。
- 檢查未編入索引的查詢。
- 請使用只會下載資料更新的事件監聽器,例如
on()
而非once()
。 - 使用安全規則封鎖未經授權的下載作業。
如果儲存空間已用盡,請升級價格方案,以免服務中斷。如要減少資料庫中的資料量,請嘗試下列步驟:
- 執行定期清理工作。
- 減少資料庫中的重複資料。
請注意,刪除資料後,可能需要一段時間才會反映在儲存空間配額中。
如果同時存在的資料庫連線數量超過上限,請升級方案,避免服務中斷。如要管理資料庫的同時連線,如果使用者不需要即時連線,請嘗試透過 REST API 連線。
Realtime Database:如果我超過 Realtime Database 的 Spark 方案儲存空間或下載限制,會發生什麼情況?
為提供可預測的價格,Spark 方案提供的資源有上限。也就是說,如果您在某個月超出任何方案限制,系統就會關閉應用程式,避免您繼續使用資源並產生額外費用。
Realtime Database:如果超過 Spark 方案的 Realtime Database 同時連線數限制,會發生什麼情況?
當應用程式在 Spark 方案中達到並行處理限制時,系統會拒絕所有後續連線,直到關閉部分現有連線為止。已連線的使用者仍可繼續使用該應用程式。
Realtime Database:什麼是自動備份功能?您是否為 Realtime Database 提供每小時備份服務?
自動備份是專為採用 Blaze 價格方案的客戶提供的進階功能,可每天備份您的 Firebase Realtime Database 資料,並上傳至 Google Cloud Storage。
我們不提供每小時備份服務。
Realtime Database:為什麼 2016 年 9 月至 2017 年 3 月期間,我的 Realtime Database 回報的頻寬低於平均值?
在頻寬計算中,我們通常會加入 SSL 加密負荷 (根據 OSI 模型的第 5 層)。不過,在 2016 年 9 月,我們引入了一個錯誤,導致頻寬回報忽略加密額外負擔。這可能會導致帳戶在幾個月內的回報頻寬和帳單費用不合理地偏低。
我們已在 2017 年 3 月底發布錯誤修正程式,讓頻寬報表和帳單恢復正常。
Remote Config
Remote Config:為什麼擷取的值不會變更應用程式的行為和外觀?
除非您使用 fetchAndActivate()
擷取值,否則值會儲存在本機,但不會啟用。如要啟用擷取的值,讓這些值生效,請呼叫 activate
。這項設計可讓您控制應用程式的行為和外觀何時變更,因為您可以選擇呼叫 activate
的時機。呼叫 activate
後,應用程式原始碼會決定何時使用更新的參數值。
舉例來說,您可以擷取值,然後在使用者下次啟動應用程式時啟用這些值,這樣就不必在應用程式等待服務擷取值時延遲啟動。應用程式使用更新後的參數值時,就會變更應用程式的行為和外觀。
如要進一步瞭解遠端設定 API 和使用模式,請參閱「遠端設定 API 總覽」。
Remote Config:我在開發應用程式時會發出許多擷取要求。為什麼應用程式在傳送擷取要求時,無法一律從服務中取得最新值?
在應用程式開發期間,您可能會經常擷取及啟用設定 (每小時多次),以便在開發及測試應用程式時快速迭代。為了在最多 10 位開發人員的專案中快速迭代,您可以在應用程式中暫時設定 FirebaseRemoteConfigSettings
物件,並設定較低的擷取間隔 (setMinimumFetchIntervalInSeconds
)。
Remote Config:應用程式傳送擷取要求後,Remote Config 服務多快會傳回擷取的值?
裝置通常會在 1 秒內收到擷取的值,而且通常會在毫秒內收到擷取的值。Remote Config 服務會在幾毫秒內處理擷取要求,但完成擷取要求所需的時間取決於裝置的網路速度,以及裝置使用的網路連線延遲時間。
如果您希望盡快在應用程式中套用擷取的值,但又不想造成使用者體驗不佳的情況,建議您在應用程式每次進行全螢幕重新整理時,新增對 fetchAndActivate
的呼叫。
Test Lab
請造訪 Test Lab 疑難排解頁面,瞭解實用提示和常見問題的解答。
Firebase 使用者區隔儲存空間
什麼是 Firebase 使用者區隔儲存空間?
Firebase 使用者區隔儲存空間會儲存 Firebase 安裝 ID 和相關屬性、區隔,以及您建立的目標對象清單,以便將指定資訊提供給使用這些資訊的其他 Firebase 服務,例如 Crashlytics、FCM、Remote Config 個人化功能等等。