Google berkomitmen untuk mendorong terwujudnya keadilan ras bagi komunitas Kulit Hitam. Lihat caranya.

Otentikasi dengan Firebase menggunakan Akun Berbasis Kata Sandi menggunakan Unity

Tetap teratur dengan koleksi Simpan dan kategorikan konten berdasarkan preferensi Anda.

Anda dapat menggunakan Firebase Authentication agar pengguna dapat mengautentikasi dengan Firebase menggunakan alamat email dan sandi mereka, dan untuk mengelola akun berbasis sandi aplikasi Anda.

Sebelum kamu memulai

Sebelum dapat menggunakan Firebase Authentication , Anda perlu:

  • Daftarkan proyek Unity Anda dan konfigurasikan untuk menggunakan Firebase.

    • Jika project Unity Anda sudah menggunakan Firebase, maka project tersebut sudah terdaftar dan dikonfigurasi untuk Firebase.

    • Jika Anda tidak memiliki proyek Unity, Anda dapat mengunduh contoh aplikasi .

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

Perhatikan bahwa menambahkan Firebase ke proyek Unity Anda melibatkan tugas di konsol Firebase dan di proyek Unity terbuka Anda (misalnya, Anda mengunduh file konfigurasi Firebase dari konsol, lalu memindahkannya ke proyek Unity Anda).

Akses kelas Firebase.Auth.FirebaseAuth

Kelas FirebaseAuth adalah gerbang untuk semua panggilan API. Ini dapat diakses melalui FirebaseAuth.DefaultInstance .
Firebase.Auth.FirebaseAuth auth = Firebase.Auth.FirebaseAuth.DefaultInstance;

Buat akun berbasis kata sandi

Untuk membuat akun pengguna baru dengan sandi, selesaikan langkah-langkah berikut di kode masuk aplikasi Anda:

  1. Saat pengguna baru mendaftar menggunakan formulir pendaftaran aplikasi Anda, selesaikan setiap langkah validasi akun baru yang diperlukan aplikasi Anda, seperti memverifikasi bahwa kata sandi akun baru telah diketik dengan benar dan memenuhi persyaratan kerumitan Anda.
  2. Buat akun baru dengan meneruskan alamat email dan kata sandi pengguna baru ke FirebaseAuth.CreateUserWithEmailAndPassword :
    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);
    });
    

Masuk pengguna dengan alamat email dan kata sandi

Langkah-langkah untuk memasukkan pengguna dengan kata sandi serupa dengan langkah-langkah untuk membuat akun baru. Di fungsi masuk aplikasi Anda, lakukan hal berikut:

  1. Saat pengguna login ke aplikasi Anda, teruskan alamat email dan sandi pengguna ke FirebaseAuth.SignInWithEmailAndPassword :
    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);
    });
    
  2. Anda juga dapat membuat kredensial dan masuk seperti alur kerja lainnya:
    Firebase.Auth.Credential credential =
        Firebase.Auth.EmailAuthProvider.GetCredential(email, password);
    auth.SignInWithCredentialAsync(credential).ContinueWith(task => {
      if (task.IsCanceled) {
        Debug.LogError("SignInWithCredentialAsync was canceled.");
        return;
      }
      if (task.IsFaulted) {
        Debug.LogError("SignInWithCredentialAsync encountered an error: " + task.Exception);
        return;
      }
    
      Firebase.Auth.FirebaseUser newUser = task.Result;
      Debug.LogFormat("User signed in successfully: {0} ({1})",
          newUser.DisplayName, newUser.UserId);
    });
    

Direkomendasikan: Aktifkan perlindungan pencacahan email

Beberapa metode Firebase Authentication yang menggunakan alamat email sebagai parameter melontarkan kesalahan tertentu jika alamat email tidak terdaftar saat harus didaftarkan (misalnya, saat masuk dengan alamat email dan kata sandi), atau didaftarkan saat harus tidak digunakan (misalnya, saat mengubah alamat email pengguna). Meskipun hal ini berguna untuk menyarankan solusi khusus kepada pengguna, hal ini juga dapat disalahgunakan oleh pelaku jahat untuk menemukan alamat email yang didaftarkan oleh pengguna Anda.

Untuk memitigasi risiko ini, sebaiknya aktifkan perlindungan enumerasi email untuk project Anda menggunakan fitur gcloud Google Cloud. Perhatikan bahwa mengaktifkan fitur ini akan mengubah perilaku pelaporan kesalahan Firebase Authentication: pastikan aplikasi Anda tidak bergantung pada kesalahan yang lebih spesifik.

Langkah selanjutnya

Setelah pengguna masuk untuk pertama kali, akun pengguna baru dibuat dan ditautkan ke kredensial—yaitu, nama pengguna dan sandi, nomor telepon, atau informasi penyedia autentikasi—yang digunakan pengguna untuk masuk. Akun baru ini disimpan sebagai bagian dari project Firebase Anda, dan dapat digunakan untuk mengidentifikasi pengguna di setiap aplikasi dalam project Anda, terlepas dari cara pengguna login.

  • Di aplikasi Anda, Anda bisa mendapatkan informasi profil dasar pengguna dari objek Firebase.Auth.FirebaseUser :

    Firebase.Auth.FirebaseUser user = auth.CurrentUser;
    if (user != null) {
      string name = user.DisplayName;
      string email = user.Email;
      System.Uri photo_url = user.PhotoUrl;
      // The user's Id, unique to the Firebase project.
      // Do NOT use this value to authenticate with your backend server, if you
      // have one; use User.TokenAsync() instead.
      string uid = user.UserId;
    }
    
  • Dalam Aturan Keamanan Firebase Realtime Database dan Cloud Storage, Anda bisa mendapatkan ID pengguna unik pengguna yang masuk dari variabel auth , dan menggunakannya untuk mengontrol data apa yang dapat diakses pengguna.

Anda dapat mengizinkan pengguna masuk ke aplikasi Anda menggunakan beberapa penyedia autentikasi dengan menautkan kredensial penyedia autentikasi ke akun pengguna yang ada.

Untuk mengeluarkan pengguna, panggil SignOut() :

auth.SignOut();