Melakukan Autentikasi Menggunakan Login dengan Google dan Unity

Anda dapat mengizinkan pengguna untuk melakukan autentikasi dengan Firebase menggunakan Akun Google miliknya dengan mengintegrasikan Login dengan Google ke dalam aplikasi 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 dikonfigurasi untuk Firebase.

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

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

Perlu diperhatikan bahwa penambahan Firebase ke project Unity Anda memerlukan tindakan baik di Firebase console maupun di project Unity yang terbuka (misalnya, Anda mendownload file konfigurasi Firebase dari console, lalu memindahkannya ke project Unity).

Mengakses class Firebase.Auth.FirebaseAuth

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

Melakukan autentikasi dengan Firebase

  1. Ikuti petunjuk untuk Android dan iOS+ guna mendapatkan token ID untuk fungsi login dengan Google.
  2. Setelah pengguna berhasil login, tukarkan token akses dengan kredensial Firebase, lalu lakukan autentikasi dengan Firebase menggunakan kredensial Firebase:
    Firebase.Auth.Credential credential =
        Firebase.Auth.GoogleAuthProvider.GetCredential(googleIdToken, googleAccessToken);
    auth.SignInAndRetrieveDataWithCredentialAsync(credential).ContinueWith(task => {
      if (task.IsCanceled) {
        Debug.LogError("SignInAndRetrieveDataWithCredentialAsync was canceled.");
        return;
      }
      if (task.IsFaulted) {
        Debug.LogError("SignInAndRetrieveDataWithCredentialAsync 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);
    });
    

Langkah Berikutnya

Setelah pengguna login untuk pertama kalinya, akun pengguna baru akan dibuat dan ditautkan 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, terlepas dari cara pengguna login.

  • Di aplikasi, 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;
    }
    
  • Di Aturan Keamanan Firebase Realtime Database dan Cloud Storage, Anda bisa mendapatkan ID pengguna unik milik pengguna yang login dari variabel auth, dan menggunakannya untuk mengontrol data yang dapat diakses oleh pengguna.

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

Untuk memproses logout pengguna, panggil SignOut():

auth.SignOut();