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 mình bằng một tài khoản hoặc nhiều phương thức đăng nhập khác, bao gồm đăng nhập bằng địa chỉ email và mật khẩu, và nhà cung cấp danh tính được liên kết, chẳng hạn như Đăng nhập bằng Google và Đăng nhập Facebook. Chiến dịch này hướng dẫn sẽ giúp bạn bắt đầu với Firebase Authentication 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 bạn.

Trước khi bắt đầu

Trước khi bạn có thể sử dụng Firebase Authentication! bạn cần:

  • Đăng ký dự án Unity của bạn 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ì tức là dự án đã đã đăng ký và định cấu hình cho Firebase.

    • Nếu không có dự án Unity, bạn có thể tải ứ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 bao gồm cả các tác vụ 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 các tệp cấu hình Firebase xuống từ bảng điều khiển, rồi di chuyển vào dự án Unity).

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

Tạo 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 của họ địa chỉ và mật khẩu. Khi người dùng hoàn tất biểu mẫu, hãy xác thực email địa chỉ 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 có

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 của họ và mật khẩu. 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. Trình xử lý này được gọi bất cứ khi nào người dùng đăng nhập các thay đổi về trạng thái. Bởi vì trình xử lý chỉ chạy sau khi đối tượng xác thực được được khởi chạy hoàn toàn và sau khi bất kỳ lệnh gọi mạng nào hoàn tất, tốt nhất là để 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 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 được 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 yêu cầu Destroy gọi, đối tượng này sẽ tự động gọi OnDestroy Dọn dẹp các lượt tham chiếu của đối tượng Xác thực 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 tính năng hỗ trợ cho các nhà cung cấp danh tính và khách ẩn danh khác tài khoản: