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 các tài khoản ẩn danh tạm thời nhằm 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 làm việc với dữ liệu được bảo vệ bằng 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, thì 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ở trang Phương thức đăng nhập.
    • Trên trang Sign in method (Phương thức đăng nhập), hãy bật phương thức Đăng nhập ẩn danh rồi nhấp vào Save (Lưu).

Xác thực bằng Firebase dưới dạng ẩ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 với Firebase, hãy đăng nhập ẩn danh người dùng 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 với tài khoản mới của họ – ví dụ: bạn có thể muốn làm cho 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ó 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:

  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, tối đa là (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 mã nhận dạng trên Google, mã truy cập vào Facebook hoặc địa chỉ email và mật khẩu của người dùng.

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