Memulai Firebase Authentication di Unity

Anda dapat menggunakan Firebase Authentication agar pengguna bisa login ke game menggunakan salah satu atau beberapa metode login, termasuk login dengan alamat email dan sandi, serta login dengan penyedia identitas tergabung, seperti Login dengan Google dan Login dengan Facebook. Tutorial ini akan memandu Anda memulai Firebase Authentication dengan menunjukkan cara menambahkan login dengan alamat email dan sandi ke game Anda.

Sebelum memulai

Sebelum dapat menggunakan Firebase Authentication, Anda harus:

  • Mendaftarkan project Unity Anda dan mengonfigurasikannya untuk menggunakan Firebase.

    • Jika project Unity Anda telah menggunakan Firebase, berarti project tersebut telah terdaftar dan dikonfigurasikan untuk Firebase.

    • Jika belum memiliki project Unity, Anda dapat mendownload aplikasi contoh.

  • Tambahkan Firebase Unity SDK (khususnya, FirebaseAuth.unitypackage) ke project Unity Anda.

Perlu diperhatikan bahwa menambahkan Firebase ke project Unity Anda melibatkan tugas di Firebase console dan di project Unity yang terbuka (misalnya, Anda mendownload file konfigurasi Firebase dari konsol, lalu memindahkannya ke project Unity).

Mendaftarkan pengguna baru

Buat formulir agar pengguna baru bisa mendaftarkan diri ke game Anda menggunakan alamat email dan sandi yang ia miliki. Setelah pengguna melengkapi formulir, validasikan alamat email dan sandi yang diberikan oleh pengguna, lalu teruskan ke metode 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.FirebaseUser newUser = task.Result;
  Debug.LogFormat("Firebase user created successfully: {0} ({1})",
      newUser.DisplayName, newUser.UserId);
});

Membuat pengguna yang ada agar login

Buat formulir yang akan membantu pengguna yang ada untuk login menggunakan alamat email dan sandinya. Setelah pengguna melengkapi formulir, panggil metode 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.FirebaseUser newUser = task.Result;
  Debug.LogFormat("User signed in successfully: {0} ({1})",
      newUser.DisplayName, newUser.UserId);
});

Menyetel pengendali peristiwa perubahan status autentikasi dan mendapatkan data pengguna

Untuk merespons peristiwa login dan logout, instal pengendali peristiwa ke objek autentikasi global. Pengendali ini dipanggil kapan pun status login pengguna berubah. Pengendali ini berjalan hanya setelah objek autentikasi diinisialisasi sepenuhnya dan setelah panggilan jaringan selesai. Dengan begitu, pengendali peristiwa adalah tempat terbaik untuk mendapatkan informasi tentang pengguna yang login.

Daftarkan pengendali peristiwa menggunakan kolom StateChanged dari objek FirebaseAuth. Saat pengguna berhasil login, Anda bisa mendapatkan informasi tentang pengguna tersebut di pengendali peristiwa.

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;
    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 ?? "";
    }
  }
}

Langkah berikutnya

Pelajari cara menambahkan dukungan untuk penyedia identitas dan akun tamu anonim lainnya: