Trang này cung cấp thông tin trợ giúp khắc phục sự cố và giải đáp các câu hỏi thường gặp về việc sử dụng Firebase Authentication. Nếu bạn không tìm thấy thông tin mình cần hoặc cần được trợ giúp thêm, hãy liên hệ với Nhóm hỗ trợ Firebase.
Những khu vực nào được hỗ trợ xác thực bằng điện thoại?
Firebase Authentication hỗ trợ xác minh số điện thoại trên toàn cầu, nhưng không phải mạng nào cũng gửi được tin nhắn xác minh một cách đáng tin cậy. Các khu vực sau đây có tỷ lệ gửi tin nhắn cao và dự kiến sẽ hoạt động tốt cho quy trình xác thực bằng điện thoại. Một số hãng vận chuyển không hoạt động ở một khu vực (nếu có ghi chú) do tỷ lệ giao hàng thành công thấp.
| Vùng | Mã |
|---|---|
| Quảng cáo | Andorra |
| AE | Các Tiểu vương quốc Ả Rập Thống nhất |
| AF | Afghanistan |
| AG | Antigua và Barbuda |
| AL | Albania |
| SÁNG | Armenia |
| AO | Angola |
| Thực tế tăng cường (AR) | Argentina |
| AS | Samoa thuộc Hoa Kỳ |
| AT | Áo |
| AU | Úc |
| AW | Aruba |
| AZ | Azerbaijan |
| BA | Bosnia và Herzegovina |
| BB | Barbados |
| BD | Bangladesh |
| Bỉ | Bỉ |
| BF | Burkina Faso |
| BG | Bulgaria |
| BJ | Benin |
| BM | Bermuda |
| BN | Brunei Darussalam |
| BO | Bolivia |
| BR | Brazil |
| BS | Bahamas |
| BT | Bhutan |
| BW | Botswana |
| BỞI | Belarus |
| BZ | Belize |
| CA | Canada |
| CD | Congo (Kinshasa) |
| CF | Cộng hòa Trung Phi |
| CG | Congo (Brazzaville) |
| CH | Thụy Sĩ |
| CI | Bờ Biển Ngà |
| CK | Quần đảo Cook |
| CL | Chile |
| CM | Cameroon |
| CO | Colombia |
| câu trả lời soạn trước | Costa Rica |
| CV | Cape Verde |
| CW | Curaçao |
| CY | Síp |
| CZ | Cộng hòa Séc |
| DE | Đức |
| DJ | Djibouti |
| DK | Đan Mạch |
| DM | Dominica |
| DO | Cộng hòa Dominica |
| DZ | Algeria |
| EC | Ecuador |
| EG | Ai Cập |
| ES | Tây Ban Nha |
| ET | Ethiopia |
| FI | Phần Lan |
| FJ | Fiji |
| FK | Quần đảo Falkland (Malvinas) |
| FM | Liên bang Micronesia |
| FO | Quần đảo Faroe |
| FR | Pháp |
| GA | Gabon |
| GB | Vương quốc Anh |
| HS | Grenada |
| GE | Georgia |
| BT | Guiana thuộc Pháp |
| GG | Guernsey |
| GH | Ghana |
| GI | Gibraltar |
| GL | Greenland |
| GM | Gambia |
| TĐC | Guadeloupe |
| GQ | Guinea Xích đạo |
| GR | Hy Lạp |
| GT | Guatemala |
| GY | Guyana |
| HK | Hong Kong, Đặc khu hành chính Trung Quốc |
| HN | Honduras |
| HR | Croatia |
| hết hiệp I | Haiti |
| HU (Đầu phát trung tâm) | Hungary |
| giấy tờ tùy thân | Indonesia |
| IE | Ireland |
| IL | Israel |
| IM | Đảo Man |
| VÀO | Ấn Độ |
| IQ | Iraq |
| CNTT | Ý |
| JE | Jersey |
| JM | Jamaica |
| JO | Jordan |
| JP | Nhật Bản |
| KE | Kenya |
| KG | Kyrgyzstan |
| KH | Campuchia |
| KM | Comoros |
| KN | Saint Kitts và Nevis |
| KR | Hàn Quốc |
| KW | Kuwait |
| KY | Quần đảo Cayman |
| KZ | Kazakhstan |
| LA | Cộng hòa dân chủ nhân dân Lào |
| LCDCB | Lebanon |
| LC | Saint Lucia |
| LI | Liechtenstein |
| LK | Sri Lanka |
| LS | Lesotho |
| LT | Lithuania |
| LU | Luxembourg |
| LV | Latvia |
| LY | Libya |
| MA | Morocco |
| MD | Moldova |
| ME | Montenegro |
| MF | Saint-Martin (phần thuộc Pháp) |
| MG | Madagascar |
| MK | Cộng hoà Macedonia |
| MM | Myanmar |
| MN | Mông Cổ |
| MO | Ma Cao, Đặc khu hành chính Trung Quốc |
| MS | Montserrat |
| MT | Malta |
| MU | Mauritius |
| MW | Malawi |
| MX | Mexico |
| MY | Malaysia |
| MZ | Mozambique |
| NA | Namibia |
| NC | New Caledonia |
| ĐB | Niger |
| NF | Đảo Norfolk |
| NG | Nigeria |
| NI | Nicaragua |
| NL | Hà Lan |
| KHÔNG | Na Uy |
| NP | Nepal |
| New Zealand | New Zealand |
| OM | Oman |
| PA | Panama |
| PE | Peru |
| PG | Papua New Guinea |
| PH | Philippines |
| PK | Pakistan |
| PL | Ba Lan |
| CHIỀU | Saint Pierre và Miquelon |
| PR | Puerto Rico |
| PS | Lãnh thổ Palestine |
| PT | Bồ Đào Nha |
| PY | Paraguay |
| Đảm bảo chất lượng | Qatar |
| RE | Réunion |
| RO | Rumani |
| RS | Serbia |
| RU | Liên bang Nga |
| RW | Rwanda |
| STĐ | Ả Rập Xê Út |
| SC | Seychelles |
| ĐN | Thuỵ Điển |
| SG | Singapore |
| Đá ra ngoài | Saint Helena |
| SI | Slovenia |
| SK | Slovakia |
| SL | Sierra Leone |
| SN | Senegal |
| SR | Suriname |
| ST | São Tomé và Príncipe |
| SV | El Salvador |
| SZ | Eswatini (trước kia là Swaziland) |
| TC | Quần đảo Turks và Caicos |
| TG | Togo |
| TH | Thái Lan |
| trưởng nhóm | Đông Timor |
| Nhãn hiệu | Turkmenistan |
| ĐẾN | Tonga |
| TR | Thổ Nhĩ Kỳ |
| TT | Trinidad và Tobago |
| TW | Đài Loan, Trung Hoa Dân Quốc |
| TZ | Cộng hòa Thống nhất Tanzania |
| UA | Ukraina |
| UG | Uganda |
| Hoa Kỳ | United States of America |
| UY | Uruguay |
| UZ | Uzbekistan |
| VC | Saint Vincent và Grenadines |
| VE | Cộng hoà Bolivaria Venezuela |
| VG | Quần đảo Virgin thuộc Anh |
| VI | Quần đảo Virgin, Hoa Kỳ |
| VN | Việt Nam |
| WS | Samoa |
| YE | Yemen |
| YT | Mayotte |
| ZA | Nam Phi |
| ZM | Zambia |
| ZW | Zimbabwe |
Điều gì đã xảy ra với tin nhắn SMS miễn phí trong gói giá Spark?
Kể từ tháng 9 năm 2024, để cải thiện tính bảo mật và chất lượng dịch vụ của Xác thực bằng điện thoại, các dự án Firebase phải được liên kết với tài khoản Cloud Billing để bật và sử dụng Dịch vụ SMS.
Làm cách nào để ngăn chặn hành vi sai trái qua SMS khi sử dụng phương thức xác thực bằng điện thoại?
Để bảo vệ dự án của bạn khỏi hành vi bơm lưu lượng truy cập SMS và sử dụng API sai mục đích, hãy thực hiện các bước sau:
Cân nhắc việc đặt chính sách về khu vực cho SMS
Xem mức sử dụng SMS theo khu vực.
Tìm những khu vực có số lượng tin nhắn SMS đã gửi rất cao và số lượng tin nhắn SMS đã xác minh rất thấp (hoặc bằng 0). Tỷ lệ giữa số email đã xác minh và số email đã gửi là tỷ lệ thành công của bạn. Tỷ lệ gửi thành công thường nằm trong khoảng 70-85% vì SMS không phải là giao thức đảm bảo gửi và một số khu vực có thể gặp phải tình trạng sử dụng sai mục đích. Tỷ lệ thành công thấp hơn 50% cho thấy có nhiều SMS được gửi nhưng ít lượt đăng nhập thành công. Đây là một chỉ báo phổ biến về hành vi xấu và hành vi bơm lưu lượng truy cập SMS.
Sử dụng Chính sách về khu vực gửi SMS để từ chối các khu vực gửi SMS có tỷ lệ thành công thấp hoặc chỉ cho phép một số khu vực nếu ứng dụng của bạn chỉ dành cho việc phân phối ở một số thị trường nhất định.
Giới hạn các miền xác thực được uỷ quyền
Sử dụng trang tổng quan Cài đặt xác thực để quản lý các miền được uỷ quyền. Miền localhost được thêm theo mặc định vào các miền xác thực được phê duyệt để đơn giản hoá quá trình phát triển. Cân nhắc việc xoá localhost khỏi các miền được uỷ quyền trong dự án phát hành công khai để ngăn chặn các tác nhân xấu chạy mã trên localhost nhằm truy cập vào dự án phát hành công khai của bạn.
Bật và thực thi App Check
Bật App Check để giúp bảo vệ dự án của bạn khỏi hành vi sử dụng API sai mục đích bằng cách chứng thực rằng các yêu cầu chỉ đến từ những ứng dụng được liên kết với dự án của bạn.
Để sử dụng App Check với Firebase Authentication, bạn phải nâng cấp lên Firebase Authentication with Identity Platform.
Hãy nhớ rằng bạn cần thực thi App Check cho Authentication trong bảng điều khiển Firebase (cân nhắc giám sát lưu lượng truy cập trước khi thực thi). Ngoài ra, hãy kiểm tra kỹ danh sách các trang web được phê duyệt của reCAPTCHA Enterprise để xác thực rằng danh sách này chỉ chứa các trang web sản xuất của bạn và danh sách các ứng dụng đã đăng ký cho dự án của bạn trong App Check là chính xác.
Xin lưu ý rằng App Check giúp bảo vệ khỏi các cuộc tấn công tự động bằng cách xác nhận rằng lệnh gọi đến từ một trong các ứng dụng đã đăng ký của bạn. Điều này không ngăn người dùng sử dụng ứng dụng của bạn theo những cách không mong muốn (ví dụ: bắt đầu rồi không bao giờ hoàn tất quy trình đăng nhập để tạo SMS đã gửi).
Tính năng xác thực bằng điện thoại có hỗ trợ số điện thoại được chuyển sang một nhà mạng mới không?
Tại thời điểm này, số điện thoại được chuyển giữa các nhà mạng sẽ khiến tất cả tin nhắn SMS không thể gửi được cho những người dùng cuối đó. Hiện chưa có giải pháp nào cho vấn đề này và Firebase đang nỗ lực khắc phục.
Trong ứng dụng Android của tôi, tại sao tôi gặp phải lỗi sau:
Google sign in failed ?
Google sign in failedHãy làm theo các bước khắc phục sự cố trong phần Câu hỏi thường gặp này nếu bạn gặp phải lỗi sau:
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)
Đảm bảo rằng bạn đã bật đúng cách tính năng đăng nhập bằng Google làm nhà cung cấp dịch vụ xác thực:
Trong bảng điều khiển Firebase, hãy mở phần Authentication.
Trong thẻ Phương thức đăng nhập, hãy tắt rồi bật lại phương thức đăng nhập bằng Google (ngay cả khi phương thức này đã được bật):
Mở phương thức đăng nhập bằng Google, tắt phương thức này rồi nhấp vào Lưu.
Mở lại phương thức đăng nhập bằng Google, bật phương thức này rồi nhấp vào Lưu.
Đảm bảo rằng ứng dụng của bạn đang dùng tệp cấu hình Firebase mới nhất (
google-services.json).
Lấy tệp cấu hình của ứng dụng.Kiểm tra xem bạn có còn gặp lỗi này hay không. Nếu có, hãy chuyển sang bước khắc phục sự cố tiếp theo.
Đảm bảo rằng các ứng dụng OAuth 2.0 cơ bản bắt buộc đều có mặt.
Trong trang Thông tin xác thực của bảng điều khiển Google Cloud, hãy tìm trong phần Mã ứng dụng khách OAuth 2.0.
Nếu không có ứng dụng khách OAuth 2.0 (và bạn đã thực hiện tất cả các bước khắc phục sự cố ở trên), hãy liên hệ với Nhóm hỗ trợ.
Trong ứng dụng của tôi trên nền tảng Apple, tại sao tôi gặp phải lỗi sau:
You must specify <clientID> in <GIDConfiguration> ?
You must specify <clientID> in <GIDConfiguration>Hãy làm theo các bước khắc phục sự cố trong phần Câu hỏi thường gặp này nếu bạn gặp phải lỗi sau:
You must specify |clientID| in |GIDConfiguration|
Đảm bảo rằng bạn đã bật đúng cách tính năng đăng nhập bằng Google làm nhà cung cấp dịch vụ xác thực:
Trong bảng điều khiển Firebase, hãy mở phần Authentication.
Trong thẻ Phương thức đăng nhập, hãy tắt rồi bật lại phương thức đăng nhập bằng Google (ngay cả khi phương thức này đã được bật):
Mở phương thức đăng nhập bằng Google, tắt phương thức này rồi nhấp vào Lưu.
Mở lại phương thức đăng nhập bằng Google, bật phương thức này rồi nhấp vào Lưu.
Đảm bảo rằng ứng dụng của bạn đang dùng tệp cấu hình Firebase mới nhất (
GoogleService-Info.plist).
Lấy tệp cấu hình của ứng dụng.Kiểm tra xem bạn có còn gặp lỗi này hay không. Nếu có, hãy chuyển sang bước khắc phục sự cố tiếp theo.
Đảm bảo rằng các ứng dụng OAuth 2.0 cơ bản bắt buộc đều có mặt.
Trong trang Thông tin xác thực của bảng điều khiển Google Cloud, hãy tìm trong phần Mã ứng dụng khách OAuth 2.0.
Nếu không có ứng dụng khách OAuth 2.0 (và bạn đã thực hiện tất cả các bước khắc phục sự cố ở trên), hãy liên hệ với Nhóm hỗ trợ.
Tại sao tôi gặp phải lỗi sau đây trong ứng dụng web của mình:
AuthErrorCode.INVALID_OAUTH_CLIENT_ID ?
AuthErrorCode.INVALID_OAUTH_CLIENT_IDHãy làm theo các bước khắc phục sự cố trong phần Câu hỏi thường gặp này nếu bạn gặp phải lỗi sau:
AuthErrorCode.INVALID_OAUTH_CLIENT_ID
Đảm bảo rằng bạn đã bật đúng cách tính năng đăng nhập bằng Google làm nhà cung cấp dịch vụ xác thực:
Trong bảng điều khiển Firebase, hãy mở phần Authentication.
Trong thẻ Phương thức đăng nhập, hãy tắt rồi bật lại phương thức đăng nhập bằng Google (ngay cả khi phương thức này đã được bật):
Mở phương thức đăng nhập bằng Google, tắt phương thức này rồi nhấp vào Lưu.
Mở lại phương thức đăng nhập bằng Google, bật phương thức này rồi nhấp vào Lưu.
Ngoài ra, trong cấu hình trình cung cấp dịch vụ đăng nhập bằng Google của phần Authentication, hãy đảm bảo rằng mã ứng dụng khách và khoá bí mật của OAuth khớp với ứng dụng khách web xuất hiện trên trang Thông tin đăng nhập của bảng điều khiển Google Cloud (xem trong phần Mã ứng dụng OAuth 2.0).
Trong ứng dụng web của tôi, tại sao tính năng đăng nhập bằng lệnh chuyển hướng lại gặp lỗi sau:
This domain YOUR_REDIRECT_DOMAIN is not
authorized to run this operation ?
This domain YOUR_REDIRECT_DOMAIN is not
authorized to run this operationHãy làm theo các bước khắc phục sự cố trong phần Câu hỏi thường gặp này nếu bạn gặp phải lỗi sau:
This domain YOUR_REDIRECT_DOMAIN is not authorized to run this operation.
Lỗi này có thể là do miền chuyển hướng của bạn không được liệt kê là miền được uỷ quyền cho Firebase Authentication hoặc khoá API mà bạn sử dụng với Dịch vụ Firebase Authentication không hợp lệ.
Trước tiên, hãy đảm bảo rằng YOUR_REDIRECT_DOMAIN nằm trong danh sách các miền được uỷ quyền cho dự án Firebase của bạn. Nếu miền chuyển hướng của bạn đã có trong danh sách đó, hãy tiếp tục khắc phục sự cố khoá API không hợp lệ.
Theo mặc định, SDK Firebase Authentication JS dựa vào khoá API cho dự án Firebase của bạn được gắn nhãn là Browser key và sử dụng khoá này để xác minh rằng URL chuyển hướng đăng nhập hợp lệ theo danh sách các miền được uỷ quyền.
Authentication sẽ nhận được khoá API này tuỳ thuộc vào cách bạn truy cập vào SDK Authentication:
Nếu bạn sử dụng các trình trợ giúp Xác thực do Hosting cung cấp để đăng nhập người dùng bằng Authentication JS SDK, thì Firebase sẽ tự động lấy khoá API của bạn cùng với phần còn lại của cấu hình Firebase mỗi khi bạn triển khai đến Firebase Hosting. Đảm bảo rằng
authDomaintrong ứng dụng webfirebaseConfigcủa bạn được thiết lập đúng cách để sử dụng một trong các miền cho trang web Hosting đó. Bạn có thể xác minh điều này bằng cách chuyển đếnhttps://authDomain__/firebase/init.jsonvà kiểm tra để đảm bảoprojectIdkhớp vớiprojectIdtrongfirebaseConfig.Nếu tự lưu trữ mã đăng nhập, thì bạn có thể sử dụng tệp
__/firebase/init.jsonđể cung cấp cấu hình Firebase cho trình trợ giúp Chuyển hướng Authentication JS SDK tự lưu trữ. Khoá API vàprojectIdđược liệt kê trong tệp cấu hình này phải khớp với ứng dụng webfirebaseConfigcủa bạn.
Kiểm tra để đảm bảo khoá API này chưa bị xoá: Chuyển đến bảng điều khiển API và Dịch vụ > Thông tin xác thực trong bảng điều khiển Google Cloud. Tại đây, tất cả khoá API cho dự án của bạn sẽ được liệt kê.
Nếu
Browser keychưa bị xoá, hãy kiểm tra những điều sau:Đảm bảo API Firebase Authentication có trong danh sách API được phép truy cập vào khoá (tìm hiểu thêm về các quy tắc hạn chế API đối với khoá API).
Nếu bạn tự lưu trữ mã đăng nhập, hãy đảm bảo rằng khoá API có trong tệp
__/firebase/init.jsonkhớp với khoá API trong bảng điều khiển Google Cloud. Chỉnh sửa khoá trong tệp (nếu cần), sau đó triển khai lại ứng dụng.Nếu
Browser keyđã bị xoá, bạn có thể yêu cầu Firebase tạo một khoá API mới cho bạn: Trong bảng điều khiển Firebase, hãy chuyển đếnsettings > Cài đặt dự án , sau đó trong phần Ứng dụng của bạn, hãy nhấp vào ứng dụng web của bạn. Thao tác này sẽ tự động tạo một khoá API mà bạn có thể thấy trong phần Thiết lập và định cấu hình SDK cho ứng dụng web của bạn.
Xin lưu ý rằng trong bảng điều khiển Google Cloud, khoá API mới này sẽ không được gọi là
Browser key; thay vào đó, khoá này sẽ có cùng tên với biệt hiệu của Ứng dụng web Firebase. Nếu bạn quyết định thêm các quy tắc hạn chế đối với API vào khoá API mới này, hãy đảm bảo rằng API Firebase Authentication có trong danh sách các API được phép.Sau khi bạn tạo khoá API mới, hãy hoàn tất các bước áp dụng bên dưới:
Nếu bạn sử dụng URL Hostingđã đặt trước, hãy triển khai lại ứng dụng của bạn lên Firebase để ứng dụng có thể tự động lấy khoá API mới cùng với phần còn lại của cấu hình Firebase.
Nếu bạn tự lưu trữ mã đăng nhập, hãy sao chép khoá API mới và thêm khoá đó vào tệp
__/firebase/init.json, sau đó triển khai lại ứng dụng.
Làm cách nào để tạo ứng dụng web OAuth theo cách thủ công?
Mở trang Thông tin đăng nhập của bảng điều khiển Google Cloud.
Ở đầu trang, hãy chọn Tạo thông tin xác thực > Mã ứng dụng OAuth.
Nếu bạn được nhắc định cấu hình màn hình xin phép, hãy làm theo hướng dẫn trên màn hình, sau đó tiếp tục thực hiện các bước tiếp theo trong phần Câu hỏi thường gặp này.
Tạo ứng dụng web OAuth:
Đối với Loại ứng dụng, hãy chọn Ứng dụng web.
Đối với Nguồn gốc JavaScript được uỷ quyền, hãy thêm những thông tin sau:
http://localhosthttp://localhost:5000https://PROJECT_ID.firebaseapp.comhttps://PROJECT_ID.web.app
Đối với URI chuyển hướng được uỷ quyền, hãy thêm những URI sau:
https://PROJECT_ID.firebaseapp.com/__/auth/handlerhttps://PROJECT_ID.web.app/__/auth/handler
Lưu ứng dụng OAuth.
Sao chép mã ứng dụng OAuth mới và khoá bí mật của ứng dụng OAuth vào bảng nhớ tạm.
Trong bảng điều khiển Firebase, hãy mở phần Authentication.
Trong thẻ Phương thức đăng nhập, hãy mở trình cung cấp Đăng nhập bằng Google, sau đó dán mã ứng dụng khách và khoá bí mật của máy chủ web mà bạn vừa tạo và sao chép từ bảng điều khiển Google Cloud. Nhấp vào Lưu.
%APP_NAME% được xác định như thế nào đối với mẫu email cho email xác nhận có thể được gửi cho người dùng khi họ đăng ký bằng địa chỉ email và mật khẩu?
Trước tháng 12 năm 2022, %APP_NAME% trong mẫu email được điền sẵn tên thương hiệu OAuth được cung cấp tự động bất cứ khi nào một ứng dụng Android được đăng ký trong dự án Firebase. Giờ đây, vì thương hiệu OAuth chỉ được cung cấp khi tính năng đăng nhập bằng Google được bật, nên phần sau đây mô tả cách xác định %APP_NAME%:
Nếu có tên thương hiệu OAuth, thì
%APP_NAME%trong mẫu email sẽ là tên thương hiệu OAuth (giống như hành vi trước tháng 12 năm 2022).Nếu tên thương hiệu OAuth không có sẵn, thì
%APP_NAME%trong mẫu email sẽ được xác định như sau:Đối với ứng dụng web,
%APP_NAME%sẽ là tên trang web Firebase Hosting mặc định (giá trị đứng trước.firebaseapp.comvà.web.app, thường là mã dự án Firebase).Đối với ứng dụng di động:
Nếu tên gói Android hoặc mã nhận dạng gói iOS có trong yêu cầu, thì
%APP_NAME%sẽ là tên ứng dụng được dùng trong Cửa hàng Play hoặc App Store (tương ứng).Nếu không,
%APP_NAME%sẽ là tên trang web Firebase Hosting mặc định (giá trị đứng trước.firebaseapp.comvà.web.app, thường là mã dự án Firebase).
Xin lưu ý rằng nếu quá trình tra cứu tên trang web Firebase Hosting mặc định không thành công, thì phương án dự phòng cuối cùng là sử dụng mã dự án Firebase làm
%APP_NAME%.