Autentikasi Firebase
Masuk dengan email dan Google.
Autentikasi Firebase adalah pelajaran Android Academy gratis di CoddyKit. Ini adalah pelajaran 2 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Android Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Android Academy mencakup 4 pelajaran total.
Mengapa Firebase Auth?
Firebase Authentication menangani bagian sulit dari proses masuk pengguna: penyimpanan kata sandi yang aman, penyegaran token, pemulihan akun, dan banyak penyedia (email, Google, Apple, telepon, anonim).
Alih-alih membuat server login, Anda cukup memanggil beberapa API dan mendapatkan FirebaseUser yang telah terverifikasi. Dalam pelajaran ini, Anda akan menggunakan email/kata sandi dan login Google.
Mengaktifkan Metode Login
Sebelum menulis kode, aktifkan penyedia yang Anda inginkan di Firebase console:
- Buka Authentication → Sign-in method.
- Aktifkan Email/Password.
- Aktifkan Google (pilih email dukungan).
Untuk login Google, Anda juga harus menambahkan sidik jari SHA-1 aplikasi di setelan project. Jika tidak, login akan gagal dengan kesalahan pengembang.
Mendapatkan Instance FirebaseAuth
Titik masuknya adalah Firebase.auth. Ini menyediakan pengguna saat ini serta metode untuk membuat akun, masuk, dan keluar.
auth.currentUser bernilai null ketika belum ada pengguna yang masuk — cara cepat untuk menentukan layar yang ditampilkan saat aplikasi dimulai.
import com.google.firebase.Firebase
import com.google.firebase.auth.auth
val auth = Firebase.auth
fun isLoggedIn(): Boolean {
return auth.currentUser != null
}Membuat Akun
Daftarkan pengguna baru dengan createUserWithEmailAndPassword. Fungsi ini mengembalikan Task, tetapi dalam kode coroutine Anda dapat menggunakan await() (dari kotlinx-coroutines-play-services).
Setelah berhasil, pengguna langsung masuk.
import com.google.firebase.Firebase
import com.google.firebase.auth.auth
import kotlinx.coroutines.tasks.await
suspend fun register(email: String, password: String): Result<Unit> {
return try {
Firebase.auth
.createUserWithEmailAndPassword(email, password)
.await()
Result.success(Unit)
} catch (e: Exception) {
Result.failure(e)
}
}Masuk dengan Email
Untuk memasukkan pengguna yang sudah ada, gunakan signInWithEmailAndPassword. Bentuknya mirip dengan pendaftaran.
Membungkus pemanggilan ini dalam try/catch memungkinkan Anda menampilkan error yang jelas — kata sandi salah, pengguna tidak ditemukan, atau email tidak valid.
import com.google.firebase.Firebase
import com.google.firebase.auth.auth
import com.google.firebase.auth.FirebaseUser
import kotlinx.coroutines.tasks.await
suspend fun login(email: String, password: String): FirebaseUser? {
val result = Firebase.auth
.signInWithEmailAndPassword(email, password)
.await()
return result.user
}Layar Masuk dengan Compose
Hubungkan autentikasi ke layar Compose sederhana. Simpan email dan kata sandi dalam status, panggil fungsi suspend dari cakupan coroutine, lalu tampilkan error.
@Composable
fun LoginScreen(onLoggedIn: () -> Unit) {
var email by remember { mutableStateOf("") }
var password by remember { mutableStateOf("") }
var error by remember { mutableStateOf<String?>(null) }
val scope = rememberCoroutineScope()
Column(Modifier.padding(16.dp)) {
TextField(email, { email = it }, label = { Text("Email") })
TextField(password, { password = it }, label = { Text("Password") })
error?.let { Text(it, color = Color.Red) }
Button(onClick = {
scope.launch {
val user = login(email, password)
if (user != null) onLoggedIn() else error = "Login failed"
}
}) { Text("Sign in") }
}
}Membaca Pengguna Saat Ini
FirebaseUser menyimpan detail identitas: uid (id unik yang stabil), email, displayName, dan photoUrl.
Gunakan uid sebagai kunci saat menyimpan data pengguna tersebut di Firestore — nilainya dijamin unik dan tidak berubah.
import com.google.firebase.Firebase
import com.google.firebase.auth.auth
fun describeUser() {
val user = Firebase.auth.currentUser ?: return
println("UID: ${user.uid}")
println("Email: ${user.email}")
println("Name: ${user.displayName ?: "(none)"}")
}Mengamati Status Autentikasi
Autentikasi dapat berubah kapan saja (masuk, keluar, atau penyegaran token). Daftarkan AuthStateListener agar dapat merespons perubahan, bukan memeriksanya berulang kali.
Ini sangat cocok untuk berpindah secara otomatis antara layar masuk dan layar beranda.
import com.google.firebase.Firebase
import com.google.firebase.auth.FirebaseAuth
import com.google.firebase.auth.auth
val listener = FirebaseAuth.AuthStateListener { auth ->
val user = auth.currentUser
if (user == null) {
println("Signed out -> show login")
} else {
println("Signed in as ${user.email}")
}
}
// Attach and detach with lifecycle
Firebase.auth.addAuthStateListener(listener)
// Firebase.auth.removeAuthStateListener(listener)Masuk dengan Google melalui Credential Manager
Cara modern untuk masuk dengan Google adalah menggunakan API Credential Manager. Anda meminta token ID Google, lalu menukarnya dengan kredensial Firebase.
Langkah pentingnya adalah membuat kredensial GoogleAuthProvider dari token ID yang dikembalikan, lalu meneruskannya ke signInWithCredential.
import com.google.firebase.Firebase
import com.google.firebase.auth.GoogleAuthProvider
import com.google.firebase.auth.auth
import kotlinx.coroutines.tasks.await
suspend fun firebaseSignInWithGoogle(idToken: String) {
// idToken comes from Credential Manager / Google Identity
val credential = GoogleAuthProvider.getCredential(idToken, null)
Firebase.auth.signInWithCredential(credential).await()
}Keluar
Untuk keluar, Anda cukup melakukan satu pemanggilan: auth.signOut(). Pemanggilan ini menghapus pengguna lokal dan memicu listener status autentikasi Anda.
Untuk masuk dengan Google, Anda juga dapat menghapus status Credential Manager agar pemilih akun muncul lagi pada kesempatan berikutnya. Setelah keluar, currentUser menjadi null.
import com.google.firebase.Firebase
import com.google.firebase.auth.auth
fun logout() {
Firebase.auth.signOut()
// currentUser is now null; your AuthStateListener fires
}Menangani Error Autentikasi
Kegagalan autentikasi akan melempar pengecualian bertipe yang dapat Anda tangani sesuai kondisinya:
FirebaseAuthInvalidUserException— pengguna tidak ditemukan atau dinonaktifkan.FirebaseAuthInvalidCredentialsException— kata sandi salah atau email tidak valid.FirebaseAuthUserCollisionException— email sudah terdaftar.
Ubah error ini menjadi pesan yang mudah dipahami, bukan menampilkan jejak tumpukan mentah.
import com.google.firebase.auth.FirebaseAuthInvalidCredentialsException
import com.google.firebase.auth.FirebaseAuthUserCollisionException
fun messageFor(e: Throwable): String = when (e) {
is FirebaseAuthInvalidCredentialsException -> "Wrong email or password"
is FirebaseAuthUserCollisionException -> "That email is already in use"
else -> "Something went wrong, try again"
}Pemeriksaan Singkat
Anda ingin memindahkan pengguna secara otomatis antara layar masuk dan layar beranda setiap kali mereka masuk atau keluar. Pendekatan apa yang paling rapi?
Ringkasan: Autentikasi
Sekarang Anda dapat mengautentikasi pengguna dengan Firebase:
- Aktifkan penyedia di konsol; tambahkan SHA-1 Anda untuk Google.
- Gunakan
Firebase.authdengancreateUserWithEmailAndPassword/signInWithEmailAndPassword. - Masuk dengan Google: dapatkan token ID, buat kredensial
GoogleAuthProvider, lalu panggilsignInWithCredential. - Baca identitas melalui
currentUser(gunakanuidsebagai kunci data Anda). - Respons perubahan dengan AuthStateListener; keluar dengan
signOut().
Berikutnya: menyimpan data pengguna tersebut di Cloud Firestore.
Belajar Kotlin dengan tutor AI — gratis
Tulis dan jalankan kode asli di browser kamu, dapatkan bantuan instan dari tutor AI 24/7, dan lanjutkan di mana kamu tinggalkan di web atau aplikasi.
- Kursus
- 36
- Pelajaran
- 152
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Autentikasi Firebase” gratis?
Ya — teks lengkap “Autentikasi Firebase” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Android Academy, upgrade ke CoddyKit PRO. Kursus Android Academy mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “Autentikasi Firebase”?
Masuk dengan email dan Google. Kamu berlatih Android Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai Android Academy?
Tidak diperlukan pengalaman sebelumnya. Android Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 2 dari 4.
Berapa lama pelajaran “Autentikasi Firebase” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran Android Academy ini?
Ya. Setiap pelajaran Android Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- Menyiapkan Firebase
- Autentikasi Firebase
- Dasar-Dasar Cloud Firestore
- Push dengan Cloud Messaging