Xác thực bằng Firebase dưới dạng ẩn danh

Bạn có thể sử dụng tính năng Xác thực Firebase để tạo và sử dụng các tài khoản ẩn danh tạm thời nhằm xác thực bằng Firebase. Bạn có thể sử dụng các tài khoản ẩn danh tạm thời này để cho phép những 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ằng 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ệ trong các phiên sau này.

Trước khi bắt đầu

  1. 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.

  2. Bật tính năng Đăng nhập ẩn danh:

    1. Trong bảng điều khiển Firebase, hãy chuyển đến phần Bảo mật > Xác thực.

    2. Trong thẻ Phương thức đăng nhập, hãy bật nhà cung cấp dịch vụ đăng nhập Ẩn danh.

    3. Nhấp vào Lưu.

Xác thực bằng Firebase một cách ẩn danh

Khi người dùng đã đăng xuất sử dụng một tính năng của ứng dụng yêu cầu xác thực bằng Firebase, hãy đăng nhập người dùng một cách ẩ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 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 làm việc bằng tài khoản mới của mình. Ví dụ: bạn có thể muốn các mặt hàng mà người dùng đã thêm vào giỏ hàng trước khi họ đăng ký có trong giỏ hàng của tài khoản mới. Để làm như vậy, vui lòng hoàn thành các bước sau:

  1. Khi người dùng đăng ký, hãy hoàn tất quy trình đăng nhập cho nhà cung cấp dịch vụ xác thực của người dùng cho đến khi gọi một trong các phương thức signInWith (nhưng không bao gồm việc gọi phương thức đó). Ví dụ: lấy mã thông báo mã nhận dạng Google, mã truy cập Facebook hoặc địa chỉ email và mật khẩu của người dùng.

  2. Lấy đối tượng Credential cho nhà cung cấp dịch vụ 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.
    
  3. Truyền đối tượng Credential vào phương thức linkWithCredential() 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 đến linkWithCredential() thành công, tài khoản mới của người dùng có thể truy cập vào dữ liệu Firebase của tài khoản ẩn danh.

Các 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 sẽ được lưu trữ trong dự án Firebase của bạn và có thể 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ể phương thức đăng nhập mà người dùng đã sử dụng.

Trong các ứng dụng của mình, bạn có thể lấy thông tin cơ bản về hồ sơ của người dùng từ đối tượng User. Xem phần Quản lý người dùng.

Trong Quy tắc bảo mật của Cơ sở dữ liệu theo thời gian thực của Firebase và Cloud Storage, bạn có thể lấy mã nhận dạng người dùng duy nhất của người dùng đã đăng nhập từ biến auth và sử dụng mã này để 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 dịch vụ xác thực bằng cách liên kết thông tin đăng nhập của nhà cung cấp dịch vụ 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();