Xác thực bằng Firebase ở chế độ ẩn danh

Bạn có thể sử dụng tính nă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. Những tài khoản ẩn danh tạm thời này có thể được 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ệ theo các quy tắc bảo mật. Nếu một 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. Làm theo các bước trong hướng dẫn Bắt đầu nếu bạn chưa làm việc này.

  2. Bật chế độ Đăng nhập ẩn danh:

    • Trong phần Xác thực của bảng điều khiển của Firebase, hãy mở Phương thức đăng nhập .
    • Từ trang Phương thức đăng nhập, hãy bật tính năng Đăng nhập ẩn danh rồi 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 ở 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ể cho phép họ tiếp tục công việc của họ với tài khoản mới—ví dụ: bạn có thể muốn tạo các mặt hàng mà người dùng đã thêm vào giỏ hàng trước khi đăng ký có sẵn trong giỏ hàng trong tài khoản mới của họ. Để làm như vậy, vui lòng hoàn thành các bước sau các bước:

  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 tối đa, nhưng không bao gồm, gọi một trong signInWith – phương thức. Ví dụ: lấy mã thông báo mã nhận dạng trên Google của người dùng, Mã truy cập Facebook hoặc địa chỉ email và mật khẩu.

  2. Nhận đố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 đến linkWithCredential() của người dùng đăng nhập phương thức:

    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 một tài khoản mới, tài khoản này sẽ được lưu trữ như một phần của dự án Firebase và có thể được dùng để xác định người dùng trên mọi ứng dụng trong dự án, bất kể người dùng đã sử dụng phương thức đăng nhập nào.

Trong ứ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 phần Quản lý người dùng.

Trong Cơ sở dữ liệu theo thời gian thực của Firebase và Quy tắc bảo mật của 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 rồi sử dụng mã đó để kiểm soát loại 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 phương thức xác thực nhà cung cấp 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 một người dùng, hãy gọi signOut():

await FirebaseAuth.instance.signOut();