Bắt đầu với Xác thực Firebase trong Unity

Bạn có thể sử dụng Xác thực Firebase để cho phép người dùng đăng nhập vào trò chơi của mình bằng một hoặc nhiều phương thức đăng nhập, bao gồm đă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 Facebook. Hướng dẫn này giúp bạn bắt đầu với Xác thực Firebase bằng cách chỉ cho bạn cách thêm địa chỉ email và mật khẩu đăng nhập vào trò chơi của mình.

Trước khi bắt đầu

Trước khi có thể sử dụng Xác thực Firebase , bạn cần:

  • Đăng ký dự án Unity của bạn và định cấu hình 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 bạn không có dự án Unity, bạn có thể tải xuống ứng dụng mẫu .

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

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

Đă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ý trò chơi của bạn bằng địa chỉ email và mật khẩu của họ. Khi người dùng hoàn thành 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 sang 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 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 thành 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);
});

Đặt 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 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. Bở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 bất kỳ cuộc gọi mạng nào đã hoàn thành, đâ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ể lấy 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 gọi Destroy , nó sẽ tự động gọi OnDestroy . Dọn sạch 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;
}

Bước tiếp theo

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