本頁面提供 Firebase Authentication 的疑難排解說明和常見問題解答。如果找不到所需資訊或需要其他協助,請與 Firebase 支援團隊聯絡。
哪些地區支援電話驗證?
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 | 斐濟 |
| 外鍵 | 福克蘭群島 (馬爾維納斯) |
| FM | 密克羅尼西亞聯邦 |
| FO | 法羅群島 |
| FR | 法國 |
| 正式發布版 | 加彭 |
| GB | 英國 |
| GD | 格瑞那達 |
| GE | 喬治亞 |
| 進球 | 法屬圭亞那 |
| GG | 根息 |
| GH | 迦納 |
| GI | 直布羅陀 |
| GL | 格陵蘭 |
| 總經理 | 甘比亞 |
| GP | 瓜地洛普 |
| GQ | 赤道幾內亞 |
| GR | 希臘 |
| GT | 瓜地馬拉 |
| GY | 蓋亞那 |
| HK | 中國香港特別行政區 |
| HN | 宏都拉斯 |
| HR | 克羅埃西亞 |
| 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 | 菲律賓 |
| 主鍵 | 巴基斯坦 |
| 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 | 東帝汶 |
| 商標 | 土庫曼 |
| 收件者 | 東加 |
| TR | 土耳其 |
| TT | 千里達及托巴哥 |
| 台灣 | 臺灣 |
| TZ | 坦尚尼亞聯合共和國 |
| 通用 Analytics | 烏克蘭 |
| UG | 烏干達 |
| 美國 | 美國 |
| UY | 烏拉圭 |
| UZ | 烏茲別克 |
| VC | 聖文森及格瑞那丁 |
| VE | 委內瑞拉 (玻利瓦共和國) |
| VG | 英屬維京群島 |
| VI | 美屬維京群島 |
| VN | 越南 |
| WS | 薩摩亞 |
| YE | 葉門 |
| YT | 馬約特 |
| ZA | 南非 |
| ZM | 尚比亞 |
| ZW | 辛巴威 |
免付費簡訊在 Spark 定價方案中發生了什麼事?
為提升電話號碼驗證的安全性與服務品質,自 2024 年 9 月起,Firebase 專案必須連結至 Cloud Billing 帳戶,才能啟用及使用簡訊服務。
使用電話驗證時,如何防止簡訊濫用?
為保護專案免受垃圾簡訊和 API 濫用行為影響,請採取下列步驟:
考慮設定簡訊區域政策
-
找出傳送簡訊次數非常高,但已驗證簡訊次數非常低 (或為零) 的區域。驗證成功率是驗證次數與傳送次數的比率。 由於簡訊並非保證傳遞的通訊協定,且部分地區可能會發生濫用情形,因此一般而言,70% 至 85% 的成功率都算正常。如果成功率低於 50%,表示系統傳送了許多簡訊,但登入成功次數很少,這通常是惡意行為者和簡訊流量灌水活動的指標。
使用「簡訊區域政策」拒絕成功率低的簡訊區域,或只允許特定區域 (如果應用程式僅適用於特定市場)。
限制授權驗證網域
使用驗證設定資訊主頁管理授權網域。系統預設會將 localhost 網域新增至核准的驗證網域,以簡化開發作業。請考慮從正式版專案的授權網域中移除 localhost,以免惡意行為人透過自己的 localhost 存取正式版專案。
啟用並強制執行 App Check
啟用 App Check,確保要求只來自與專案相關聯的應用程式,有助於保護專案免於 API 濫用。
如要搭配 Firebase Authentication 使用 App Check,請升級至 Firebase Authentication with Identity Platform。
請注意,您必須在Firebase管理中心中強制執行 App Check,才能使用 Authentication (建議先監控流量,再強制執行)。此外,請仔細檢查 reCAPTCHA Enterprise 核准的網站清單,確認其中只包含正式版網站,並確認 App Check 中向專案註冊的應用程式清單正確無誤。
請注意,App Check 會判斷呼叫是否來自您註冊的應用程式,藉此防範自動化攻擊。但使用者仍可透過非預期方式使用您的應用程式 (例如啟動登入流程,但從未完成,藉此產生傳送的簡訊)。
電話號碼是否已轉移至電話驗證支援的新電信業者?
目前,如果使用者將號碼從一家電信業者轉移到另一家,所有簡訊都將無法傳送給這些使用者。目前沒有解決方法,Firebase 正在處理這個問題。
在我的 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 用戶端。
如果沒有 OAuth 2.0 用戶端 (且您已完成上述所有疑難排解步驟),請與支援團隊聯絡。
在我的 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 用戶端。
如果沒有 OAuth 2.0 用戶端 (且您已完成上述所有疑難排解步驟),請與支援團隊聯絡。
為什麼我在網頁應用程式中會收到下列錯誤:
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」部分)。
在我的網頁應用程式中,為什麼使用重新導向登入會失敗,並顯示以下錯誤:
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 專案中標示為 Browser key 的 API 金鑰,並使用這個金鑰驗證登入重新導向網址是否有效 (根據授權網域清單)。Authentication 會根據您存取 Authentication SDK 的方式取得這個 API 金鑰:
如果您使用Hosting提供的 Auth 輔助程式,透過 Authentication JS SDK 登入使用者,則每次部署至 Firebase Hosting 時,Firebase 會自動取得 API 金鑰和其餘 Firebase 設定。請確認
authDomain網頁應用程式firebaseConfig已正確設定,可使用該 Hosting 網站的其中一個網域。如要確認,請前往https://authDomain__/firebase/init.json,並檢查projectId是否與firebaseConfig中的相符。如果您自行代管登入程式碼,可以使用
__/firebase/init.json檔案,將 Firebase 設定提供給自行代管的 Authentication JS SDK 重新導向輔助程式。API 金鑰和這個設定檔中列出的projectId應與網頁應用程式firebaseConfig相符。
確認 API 金鑰未遭刪除:前往 Google Cloud 控制台的「APIs & Services」(API 和服務) >「Credentials」(憑證) 面板,即可查看專案的所有 API 金鑰。
如果
Browser key「尚未」刪除,請檢查下列事項:確認 Firebase Authentication API 位於金鑰可存取的允許 API 清單中 (進一步瞭解 API 金鑰的 API 限制)。
如果您自行代管登入程式碼,請確認
__/firebase/init.json檔案中列出的 API 金鑰與 Google Cloud 控制台中的 API 金鑰相符。視需要修正檔案中的金鑰,然後重新部署應用程式。如果
Browser key已遭刪除,您可以讓 Firebase 為您產生新的 API 金鑰:在 Firebase 控制台中,依序前往「settings」>「專案設定 」,然後在「您的應用程式」部分中,按一下您的網頁應用程式。這項操作會自動建立 API 金鑰,您可以在網頁應用程式的「SDK 設定和設定」部分中查看。
請注意,在 Google Cloud 控制台中,這個新 API 金鑰不會稱為
Browser key,而是與 Firebase 網頁應用程式的暱稱相同。如果您決定對這個新 API 金鑰新增 API 限制,請務必將 Firebase Authentication API 加入允許的 API 清單。建立新的 API 金鑰後,請完成下列適用步驟:
如果您使用保留的 Hosting 網址,請將應用程式重新部署至 Firebase,以便自動取得新的 API 金鑰和其餘 Firebase 設定。
如果您自行代管登入程式碼,請複製新的 API 金鑰並加進
__/firebase/init.json檔案,然後重新部署應用程式。
如何手動建構 OAuth 網路用戶端?
開啟 Google Cloud 控制台的「憑證」頁面。
在頁面頂端,選取「建立憑證」>「OAuth 用戶端 ID」。
如果系統提示您設定同意畫面,請按照畫面上的指示操作,然後繼續執行本常見問題的後續步驟。
建立 OAuth 網頁用戶端:
在「Application Type」部分,選取「網頁應用程式」。
在「已授權的 JavaScript 來源」部分,新增下列項目:
http://localhosthttp://localhost:5000https://PROJECT_ID.firebaseapp.comhttps://PROJECT_ID.web.app
針對「已授權的重新導向 URI」,請新增下列項目:
https://PROJECT_ID.firebaseapp.com/__/auth/handlerhttps://PROJECT_ID.web.app/__/auth/handler
儲存 OAuth 用戶端。
將新的 OAuth 用戶端 ID 和用戶端密鑰複製到剪貼簿。
在 Firebase 控制台中,開啟「Authentication」部分。
在「登入方式」分頁中,開啟「Google 登入」供應商,然後貼上您剛從 Google Cloud 控制台建構及複製的網路伺服器用戶端 ID 和密鑰。然後點選「儲存」。
使用者以電子郵件地址和密碼註冊帳戶時,系統如何為可傳送給使用者的確認電子郵件,決定電子郵件範本的 %APP_NAME%?
2022 年 12 月前,每當在 Firebase 專案中註冊 Android 應用程式時,系統會自動佈建 OAuth 品牌名稱,並填入電子郵件範本中的 %APP_NAME%。現在,只有在啟用 Google 登入時,才會佈建 OAuth 品牌,因此 %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%。