Bạn có thể sử dụng Xác thực Firebase để tạo và sử dụng tài khoản ẩn danh tạm thời để xác thực với Firebase. Các tài khoản ẩn danh tạm thời này có thể được sử dụng để cho phép người dùng chưa đăng ký ứng dụng của bạn làm việc với dữ liệu được bảo vệ bởi các quy tắc bảo mật. Nếu người dùng ẩn danh quyết định đăng ký ứng dụng của bạn, bạn có thể liên kết thông tin đăng nhập của họ với tài khoản ẩn danh để họ có thể tiếp tục làm việc với dữ liệu được bảo vệ của mình trong các phiên sau.
Trước khi bắt đầu
Nếu bạn chưa làm, hãy làm theo các bước trong hướng dẫn Bắt đầu .
Bật đăng nhập ẩn danh:
- Trong phần Xác thực của bảng điều khiển Firebase, hãy mở trang Phương thức đăng nhập .
- Từ trang Phương thức đăng nhập, bật phương thức đăng nhập ẩn danh và nhấp vào Lưu .
Xác thực ẩn danh với Firebase
Khi người dùng đã đăng xuất sử dụng tính năng ứng dụng yêu cầu xác thực bằng Firebase, hãy đăng nhập người dùng ẩn danh bằng cách gọi signInAnonymously()
:
try {
final userCredential =
await FirebaseAuth.instance.signInAnonymously();
print("Signed in with temporary account.");
} on FirebaseAuthException catch (e) {
switch (e.code) {
case "operation-not-allowed":
print("Anonymous auth hasn't been enabled for this project.");
break;
default:
print("Unknown error.");
}
}
Chuyển đổi tài khoản ẩn danh thành tài khoản vĩnh viễn
Khi một người dùng ẩn danh đăng ký ứng dụng của bạn, bạn có thể muốn cho phép họ tiếp tục công việc bằng tài khoản mới của họ—ví dụ: bạn có thể muốn cung cấp các mặt hàng mà người dùng đã thêm vào giỏ hàng trước khi họ đăng ký trong tài khoản mới của họ. giỏ hàng của tài khoản. Để làm như vậy, hãy hoàn thành các bước sau:
Khi người dùng đăng ký, hãy hoàn tất quy trình đăng nhập cho nhà cung cấp xác thực của người dùng, tối đa, nhưng không bao gồm, gọi một trong các phương thức
signInWith
-. Ví dụ: lấy mã thông báo ID Google, mã thông báo truy cập Facebook hoặc địa chỉ email và mật khẩu của người dùng.Nhận một
Credential
tượng Thông tin xác thực cho nhà cung cấp xác thực mới:// Google Sign-in final credential = GoogleAuthProvider.credential(idToken: idToken); // Email and password sign-in final credential = EmailAuthProvider.credential(email: emailAddress, password: password); // Etc.
Truyền đối tượng
Credential
cho phương thứclinkWithCredential()
của người dùng đăng nhập:try { final userCredential = await FirebaseAuth.instance.currentUser ?.linkWithCredential(credential); } on FirebaseAuthException catch (e) { switch (e.code) { case "provider-already-linked": print("The provider has already been linked to the user."); break; case "invalid-credential": print("The provider's credential is not valid."); break; case "credential-already-in-use": print("The account corresponding to the credential already exists, " "or is already linked to a Firebase User."); break; // See the API reference for the full list of error codes. default: print("Unknown error."); } ```
Nếu lệnh gọi linkWithCredential()
thành công, tài khoản mới của người dùng có thể truy cập dữ liệu Firebase của tài khoản ẩn danh.
Bước tiếp theo
Sau khi người dùng tạo tài khoản mới, tài khoản này được lưu trữ như một phần của dự án Firebase và có thể được sử dụng để xác định người dùng trên mọi ứng dụng trong dự án của bạn, bất kể người dùng đã sử dụng phương thức đăng nhập nào.
Trong các ứng dụng của mình, bạn có thể lấy thông tin hồ sơ cơ bản của người dùng từ đối tượng User
. Xem Quản lý người dùng .
Trong Cơ sở dữ liệu thời gian thực Firebase và Quy tắc bảo mật lưu trữ đám mây, bạn có thể lấy ID người dùng duy nhất của người dùng đã đăng nhập từ biến auth
và sử dụng nó để kiểm soát dữ liệu mà người dùng có thể truy cập.
Bạn có thể cho phép người dùng đăng nhập vào ứng dụng của mình bằng nhiều nhà cung cấp xác thực bằng cách liên kết thông tin đăng nhập của nhà cung cấp xác thực ) với tài khoản người dùng hiện có.
Để đăng xuất người dùng, hãy gọi signOut()
:
await FirebaseAuth.instance.signOut();