Buka konsol

Melakukan autentikasi dengan Firebase menggunakan sistem autentikasi kustom dan Unity

Anda dapat mengintegrasikan Firebase Authentication dengan sistem autentikasi kustom, dengan cara memodifikasi server autentikasi Anda untuk menghasilkan token bertanda kustom ketika pengguna berhasil login. Aplikasi Anda menerima token ini dan menggunakannya untuk mengautentikasi dengan Firebase.

Sebelum memulai

  1. Sebelum dapat menggunakan Firebase Authentication, Anda harus:

    • Mendaftarkan project Unity dengan project Firebase Anda.
    • Menambahkan Firebase Unity SDK (khususnya, FirebaseAuth.unitypackage) ke project Unity Anda.

    Temukan petunjuk detail seputar langkah-langkah penyiapan awal ini di artikel Menambahkan Firebase ke project Unity Anda.

  2. Dapatkan kunci server project Anda:
    1. Buka halaman Akun Layanan pada setelan project Anda.
    2. Klik Buat Kunci Pribadi Baru di bagian bawah Firebase Admin SDK pada halaman Akun Layanan.
    3. Pasangan kunci umum/pribadi pada akun layanan baru secara otomatis disimpan di komputer Anda. Salin file ini ke server autentikasi Anda.

Melakukan Autentikasi dengan Firebase

Kelas FirebaseAuth adalah gateway untuk semua panggilan API. Class ini dapat diakses melalui FirebaseAuth.DefaultInstance.
Firebase.Auth.FirebaseAuth auth = Firebase.Auth.FirebaseAuth.DefaultInstance;

Panggil Firebase.Auth.FirebaseAuth.SignInWithCustomTokenAsync dengan token dari server autentikasi Anda.

  1. Ketika pengguna login ke aplikasi Anda, kirimkan kredensial login mereka (misalnya, nama pengguna dan sandi) ke server autentikasi Anda. Server Anda akan memeriksa kredensial dan menampilkan token kustom jika kredensial tersebut valid.
  2. Setelah Anda menerima token kustom dari server autentikasi, teruskan token tersebut ke Firebase.Auth.FirebaseAuth.SignInWithCustomTokenAsync untuk membuat pengguna login:
    auth.SignInWithCustomTokenAsync(custom_token).ContinueWith(task => {
      if (task.IsCanceled) {
        Debug.LogError("SignInWithCustomTokenAsync was canceled.");
        return;
      }
      if (task.IsFaulted) {
        Debug.LogError("SignInWithCustomTokenAsync encountered an error: " + task.Exception);
        return;
      }
    
      Firebase.Auth.FirebaseUser newUser = task.Result;
      Debug.LogFormat("User signed in successfully: {0} ({1})",
          newUser.DisplayName, newUser.UserId);
    });
    

Langkah berikutnya

Setelah pengguna login untuk pertama kalinya, akun pengguna baru akan dibuat dan dihubungkan ke kredensial—yaitu, nama pengguna dan sandi, nomor telepon, atau informasi penyedia autentikasi—yang digunakan pengguna tersebut untuk login. 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.

  • Pada aplikasi, Anda dapat memperoleh 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 dapat memperoleh ID unik milik pengguna yang login dari variabel auth dan menggunakannya untuk mengontrol data yang dapat diakses pengguna.

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

Agar pengguna logout, panggil SignOut():

auth.SignOut();