Bắt đầu xác thực Firebase trong Unity

Bạn có thể sử dụng Firebase Authentication để cho phép người dùng đăng nhập vào trò chơi của bạn bằng một hoặc nhiều phương thức đăng nhập, bao gồm cả phương thức đăng nhập bằng địa chỉ email và mật khẩu, cũng như các nhà cung cấp danh tính liên kết như Đăng nhập bằng Google và Đăng nhập bằng Facebook. Hướng dẫn này giúp bạn bắt đầu với Firebase Authentication bằng cách hướng dẫn cách thêm tính năng đăng nhập bằng địa chỉ email và mật khẩu vào trò chơi.

Trước khi bắt đầu

Để có thể sử dụng Firebase Authentication, bạn cần phải:

  • Đăng ký dự án Unity và định cấu hình dự án đó để sử dụng Firebase.

    • Nếu dự án Unity của bạn đã sử dụng Firebase, thì dự án đó đã được đăng ký và định cấu hình cho Firebase.

    • Nếu chưa có dự án Unity, bạn có thể tải ứng dụng mẫu xuống.

  • Thêm Firebase Unity SDK (cụ thể là FirebaseAuth.unitypackage) vào dự án Unity của bạn.

Xin lưu ý rằng việc thêm Firebase vào dự án Unity của bạn bao gồm các thao tác cả trong bảng điều khiển Firebase và trong dự án Unity đang mở của bạn (ví dụ: bạn tải tệp cấu hình Firebase xuống từ bảng điều khiển, sau đó di chuyển các tệp đó vào dự án Unity).

Đăng ký người dùng mới

Tạo một biểu mẫu cho phép người dùng mới đăng ký bằng địa chỉ email và mật khẩu của họ trong trò chơi của bạn. Khi người dùng hoàn tất biểu mẫu, hãy xác thực địa chỉ email và mật khẩu do người dùng cung cấp, sau đó chuyển chúng đến phương thức CreateUserWithEmailAndPasswordAsync:

auth.CreateUserWithEmailAndPasswordAsync(email, password).ContinueWith(task => {
  if (task.IsCanceled) {
    Debug.LogError("CreateUserWithEmailAndPasswordAsync was canceled.");
    return;
  }
  if (task.IsFaulted) {
    Debug.LogError("CreateUserWithEmailAndPasswordAsync encountered an error: " + task.Exception);
    return;
  }

  // Firebase user has been created.
  Firebase.Auth.AuthResult result = task.Result;
  Debug.LogFormat("Firebase user created successfully: {0} ({1})",
      result.User.DisplayName, result.User.UserId);
});

Đăng nhập người dùng hiện tại

Tạo một biểu mẫu cho phép người dùng hiện tại đăng nhập bằng địa chỉ email và mật khẩu của họ. Khi người dùng hoàn tất biểu mẫu, hãy gọi phương thức SignInWithEmailAndPasswordAsync:

auth.SignInWithEmailAndPasswordAsync(email, password).ContinueWith(task => {
  if (task.IsCanceled) {
    Debug.LogError("SignInWithEmailAndPasswordAsync was canceled.");
    return;
  }
  if (task.IsFaulted) {
    Debug.LogError("SignInWithEmailAndPasswordAsync encountered an error: " + task.Exception);
    return;
  }

  Firebase.Auth.AuthResult result = task.Result;
  Debug.LogFormat("User signed in successfully: {0} ({1})",
      result.User.DisplayName, result.User.UserId);
});

Thiết lập trình xử lý sự kiện thay đổi trạng thái xác thực và nhận dữ liệu người dùng

Để phản hồi các sự kiện đăng nhập và đăng xuất, hãy đính kèm một trình xử lý sự kiện vào đối tượng xác thực chung. Trình xử lý này được gọi bất cứ khi nào trạng thái đăng nhập của người dùng thay đổi. Vì trình xử lý chỉ chạy sau khi đối tượng xác thực được khởi tạo hoàn toàn và sau khi mọi lệnh gọi mạng hoàn tất, nên đây là nơi tốt nhất để lấy thông tin về người dùng đã đăng nhập.

Đăng ký trình xử lý sự kiện bằng cách sử dụng trường StateChanged của đối tượng FirebaseAuth. Khi người dùng đăng nhập thành công, bạn có thể nhận thông tin về người dùng trong trình xử lý sự kiện.

Cuối cùng, khi đối tượng này có Destroy được gọi, đối tượng này sẽ tự động gọi OnDestroy. Xoá các tham chiếu của đối tượng Auth trong OnDestroy.

void InitializeFirebase() {
  auth = Firebase.Auth.FirebaseAuth.DefaultInstance;
  auth.StateChanged += AuthStateChanged;
  AuthStateChanged(this, null);
}

void AuthStateChanged(object sender, System.EventArgs eventArgs) {
  if (auth.CurrentUser != user) {
    bool signedIn = user != auth.CurrentUser && auth.CurrentUser != null
        && auth.CurrentUser.IsValid();
    if (!signedIn && user != null) {
      DebugLog("Signed out " + user.UserId);
    }
    user = auth.CurrentUser;
    if (signedIn) {
      DebugLog("Signed in " + user.UserId);
      displayName = user.DisplayName ?? "";
      emailAddress = user.Email ?? "";
      photoUrl = user.PhotoUrl ?? "";
    }
  }
}

void OnDestroy() {
  auth.StateChanged -= AuthStateChanged;
  auth = null;
}

Các bước tiếp theo

Tìm hiểu cách thêm chế độ hỗ trợ cho các nhà cung cấp danh tính khác và tài khoản khách ẩn danh: