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
Jika Anda belum melakukannya, tambahkan Firebase ke proyek Android Anda .
- Jika Anda belum menghubungkan aplikasi ke proyek Firebase, lakukan dari konsol Firebase .
- Aktifkan masuk Email/Kata Sandi:
- Di konsol Firebase , buka bagian Auth .
- Pada tab Metode masuk , aktifkan metode masuk Email/sandi dan klik Simpan .
Dalam file Gradle modul (level aplikasi) Anda (biasanya
<project>/<app-module>/build.gradle
), tambahkan dependensi untuk library Android Firebase Authentication. Kami merekomendasikan penggunaan Firebase Android BoM untuk mengontrol pembuatan versi library.Kotlin+KTX
dependencies { // Import the BoM for the Firebase platform implementation platform('com.google.firebase:firebase-bom:31.2.0') // Add the dependency for the Firebase Authentication library // When using the BoM, you don't specify versions in Firebase library dependencies implementation 'com.google.firebase:firebase-auth-ktx' }
Dengan menggunakan Firebase Android BoM , aplikasi Anda akan selalu menggunakan versi pustaka Android Firebase yang kompatibel.
(Alternatif) Tambahkan dependensi library Firebase tanpa menggunakan BoM
Jika Anda memilih untuk tidak menggunakan Firebase BoM, Anda harus menentukan setiap versi pustaka Firebase di baris dependensinya.
Perhatikan bahwa jika Anda menggunakan beberapa pustaka Firebase di aplikasi Anda, kami sangat menyarankan penggunaan BoM untuk mengelola versi pustaka, yang memastikan bahwa semua versi kompatibel.
dependencies { // Add the dependency for the Firebase Authentication library // When NOT using the BoM, you must specify versions in Firebase library dependencies implementation 'com.google.firebase:firebase-auth-ktx:21.1.0' }
Java
dependencies { // Import the BoM for the Firebase platform implementation platform('com.google.firebase:firebase-bom:31.2.0') // Add the dependency for the Firebase Authentication library // When using the BoM, you don't specify versions in Firebase library dependencies implementation 'com.google.firebase:firebase-auth' }
Dengan menggunakan Firebase Android BoM , aplikasi Anda akan selalu menggunakan versi pustaka Android Firebase yang kompatibel.
(Alternatif) Tambahkan dependensi library Firebase tanpa menggunakan BoM
Jika Anda memilih untuk tidak menggunakan Firebase BoM, Anda harus menentukan setiap versi pustaka Firebase di baris dependensinya.
Perhatikan bahwa jika Anda menggunakan beberapa pustaka Firebase di aplikasi Anda, kami sangat menyarankan penggunaan BoM untuk mengelola versi pustaka, yang memastikan bahwa semua versi kompatibel.
dependencies { // Add the dependency for the Firebase Authentication library // When NOT using the BoM, you must specify versions in Firebase library dependencies implementation 'com.google.firebase:firebase-auth:21.1.0' }
Buat akun berbasis kata sandi
Untuk membuat akun pengguna baru dengan sandi, selesaikan langkah-langkah berikut dalam aktivitas masuk aplikasi Anda:
- Dalam metode
onCreate
aktivitas pendaftaran Anda, dapatkan instance bersama dari objekFirebaseAuth
:Kotlin+KTX
private lateinit var auth: FirebaseAuth // ... // Initialize Firebase Auth auth = Firebase.auth
Java
private FirebaseAuth mAuth; // ... // Initialize Firebase Auth mAuth = FirebaseAuth.getInstance();
- Saat menginisialisasi Aktivitas Anda, periksa untuk melihat apakah pengguna saat ini masuk:
Kotlin+KTX
public override fun onStart() { super.onStart() // Check if user is signed in (non-null) and update UI accordingly. val currentUser = auth.currentUser if(currentUser != null){ reload() } }
Java
@Override public void onStart() { super.onStart(); // Check if user is signed in (non-null) and update UI accordingly. FirebaseUser currentUser = mAuth.getCurrentUser(); if(currentUser != null){ reload(); } }
- 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.
- Buat akun baru dengan mengirimkan alamat email dan kata sandi pengguna baru ke
createUserWithEmailAndPassword
:Jika akun baru dibuat, pengguna juga masuk. Dalam panggilan balik, Anda dapat menggunakan metodeKotlin+KTX
auth.createUserWithEmailAndPassword(email, password) .addOnCompleteListener(this) { task -> if (task.isSuccessful) { // Sign in success, update UI with the signed-in user's information Log.d(TAG, "createUserWithEmail:success") val user = auth.currentUser updateUI(user) } else { // If sign in fails, display a message to the user. Log.w(TAG, "createUserWithEmail:failure", task.exception) Toast.makeText(baseContext, "Authentication failed.", Toast.LENGTH_SHORT).show() updateUI(null) } }
Java
mAuth.createUserWithEmailAndPassword(email, password) .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() { @Override public void onComplete(@NonNull Task<AuthResult> task) { if (task.isSuccessful()) { // Sign in success, update UI with the signed-in user's information Log.d(TAG, "createUserWithEmail:success"); FirebaseUser user = mAuth.getCurrentUser(); updateUI(user); } else { // If sign in fails, display a message to the user. Log.w(TAG, "createUserWithEmail:failure", task.getException()); Toast.makeText(EmailPasswordActivity.this, "Authentication failed.", Toast.LENGTH_SHORT).show(); updateUI(null); } } });
getCurrentUser
untuk mendapatkan data akun pengguna.
Masuk pengguna dengan alamat email dan kata sandi
Langkah-langkah untuk memasukkan pengguna dengan kata sandi serupa dengan langkah-langkah untuk membuat akun baru. Dalam aktivitas masuk aplikasi Anda, lakukan hal berikut:
- Dalam metode
onCreate
aktivitas masuk Anda, dapatkan instance bersama dari objekFirebaseAuth
:Kotlin+KTX
private lateinit var auth: FirebaseAuth // ... // Initialize Firebase Auth auth = Firebase.auth
Java
private FirebaseAuth mAuth; // ... // Initialize Firebase Auth mAuth = FirebaseAuth.getInstance();
- Saat menginisialisasi Aktivitas Anda, periksa untuk melihat apakah pengguna saat ini masuk:
Kotlin+KTX
public override fun onStart() { super.onStart() // Check if user is signed in (non-null) and update UI accordingly. val currentUser = auth.currentUser if(currentUser != null){ reload() } }
Java
@Override public void onStart() { super.onStart(); // Check if user is signed in (non-null) and update UI accordingly. FirebaseUser currentUser = mAuth.getCurrentUser(); if(currentUser != null){ reload(); } }
- Saat pengguna masuk ke aplikasi Anda, teruskan alamat email dan sandi pengguna ke
signInWithEmailAndPassword
:Jika proses masuk berhasil, Anda dapat menggunakanKotlin+KTX
auth.signInWithEmailAndPassword(email, password) .addOnCompleteListener(this) { task -> if (task.isSuccessful) { // Sign in success, update UI with the signed-in user's information Log.d(TAG, "signInWithEmail:success") val user = auth.currentUser updateUI(user) } else { // If sign in fails, display a message to the user. Log.w(TAG, "signInWithEmail:failure", task.exception) Toast.makeText(baseContext, "Authentication failed.", Toast.LENGTH_SHORT).show() updateUI(null) } }
Java
mAuth.signInWithEmailAndPassword(email, password) .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() { @Override public void onComplete(@NonNull Task<AuthResult> task) { if (task.isSuccessful()) { // Sign in success, update UI with the signed-in user's information Log.d(TAG, "signInWithEmail:success"); FirebaseUser user = mAuth.getCurrentUser(); updateUI(user); } else { // If sign in fails, display a message to the user. Log.w(TAG, "signInWithEmail:failure", task.getException()); Toast.makeText(EmailPasswordActivity.this, "Authentication failed.", Toast.LENGTH_SHORT).show(); updateUI(null); } } });
FirebaseUser
yang dikembalikan untuk melanjutkan.
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
FirebaseUser
. Lihat Kelola Pengguna .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
:
Kotlin+KTX
Firebase.auth.signOut()
Java
FirebaseAuth.getInstance().signOut();