Anda dapat menggunakan Firebase Authentication untuk mengizinkan pengguna melakukan autentikasi dengan Firebase menggunakan alamat email dan sandi, serta mengelola akun berbasis sandi aplikasi.
Sebelum memulai
Sebelum dapat menggunakan Firebase Authentication, Anda perlu:
Mendaftarkan project Unity Anda dan mengonfigurasikannya agar dapat 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.
Tambahkan 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 konsol, 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;
Membuat akun berbasis sandi
Untuk membuat akun pengguna baru dengan sandi, lakukan langkah-langkah berikut dalam kode login aplikasi Anda:
- Ketika pengguna baru mendaftar menggunakan formulir pendaftaran aplikasi Anda, selesaikan langkah-langkah validasi akun baru yang diwajibkan oleh aplikasi, seperti memverifikasi bahwa sandi akun baru tersebut telah diketik dengan benar dan memenuhi persyaratan kerumitan.
- Buat akun baru dengan meneruskan alamat email dan 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.AuthResult result = task.Result; Debug.LogFormat("Firebase user created successfully: {0} ({1})", result.User.DisplayName, result.User.UserId); });
Membuat agar pengguna login dengan alamat email dan sandi
Langkah-langkah untuk membuat agar pengguna login dengan sandi mirip dengan langkah-langkah untuk membuat akun baru. Dalam fungsi login aplikasi Anda, lakukan hal berikut:
- Ketika pengguna login ke aplikasi, 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.AuthResult result = task.Result; Debug.LogFormat("User signed in successfully: {0} ({1})", result.User.DisplayName, result.User.UserId); });
- Anda juga dapat membuat kredensial dan login seperti alur kerja lainnya:
Firebase.Auth.Credential credential = Firebase.Auth.EmailAuthProvider.GetCredential(email, password); 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); });
Direkomendasikan: Menetapkan kebijakan sandi
Anda dapat meningkatkan keamanan akun dengan menerapkan persyaratan kerumitan sandi.
Untuk mengonfigurasi kebijakan sandi pada project, buka tab Password policy di halaman Authentication Settings pada Firebase console:
Kebijakan sandi Firebase Authentication mendukung persyaratan sandi berikut:
Diperlukan karakter huruf kecil
Diperlukan karakter huruf besar
Diperlukan karakter numerik
Diperlukan karakter non-alfanumerik
Karakter berikut memenuhi persyaratan karakter non-alfanumerik:
^ $ * . [ ] { } ( ) ? " ! @ # % & / \ , > < ' : ; | _ ~
Panjang sandi minimum (berkisar antara 6 hingga 30 karakter; defaultnya adalah 6 karakter)
Panjang sandi maksimum (panjang maksimum 4.096 karakter)
Terdapat dua mode untuk mengaktifkan penerapan kebijakan sandi:
Wajib: Upaya login akan gagal sampai pengguna menggunakan sandi yang sesuai dengan kebijakan Anda.
Beri Tahu: Pengguna diizinkan untuk login dengan sandi yang tidak mematuhi kebijakan. Saat menggunakan mode ini, Anda harus memeriksa apakah sandi pengguna mematuhi kebijakan di sisi klien dan meminta pengguna dengan cara tertentu untuk memperbarui sandi mereka jika tidak mematuhinya.
Pengguna baru selalu diwajibkan untuk memilih sandi yang mematuhi kebijakan Anda.
Jika memiliki pengguna aktif, sebaiknya jangan aktifkan fitur upgrade paksa saat login kecuali jika Anda ingin memblokir akses ke pengguna yang sandinya tidak mematuhi kebijakan Anda. Sebagai gantinya, gunakan mode beri tahu, yang memungkinkan pengguna login dengan sandi saat ini, dan memberi tahu tentang persyaratan yang tidak dimiliki oleh sandi mereka.
Direkomendasikan: Mengaktifkan perlindungan enumerasi email
Beberapa metode Firebase Authentication yang menggunakan alamat email sebagai parameter akan menampilkan error tertentu jika alamat email dibatalkan pendaftarannya ketika harus didaftarkan (misalnya, saat login dengan alamat email dan sandi), atau didaftarkan saat alamat tidak boleh digunakan (misalnya, saat mengubah alamat email pengguna). Meskipun error ini dapat berguna untuk menyarankan solusi tertentu kepada pengguna, hal ini juga dapat disalahgunakan oleh pelaku kejahatan untuk menemukan alamat email yang didaftarkan oleh pengguna.
Untuk mengurangi risiko ini, sebaiknya aktifkan perlindungan enumerasi email
untuk project Anda menggunakan alat gcloud
Google Cloud. Perlu diperhatikan bahwa mengaktifkan
fitur ini akan mengubah perilaku pelaporan error Firebase Authentication. Jadi, pastikan aplikasi
Anda tidak mengandalkan error yang lebih spesifik.
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();