Android Academy · Pelajaran

Autentikasi Firebase

Masuk dengan email dan Google.

Pelajaran 2 dari 413 langkah

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.auth dengan createUserWithEmailAndPassword / signInWithEmailAndPassword.
  • Masuk dengan Google: dapatkan token ID, buat kredensial GoogleAuthProvider, lalu panggil signInWithCredential.
  • Baca identitas melalui currentUser (gunakan uid sebagai kunci data Anda).
  • Respons perubahan dengan AuthStateListener; keluar dengan signOut().

Berikutnya: menyimpan data pengguna tersebut di Cloud Firestore.

Gratis untuk memulai

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

  1. Menyiapkan Firebase
  2. Autentikasi Firebase
  3. Dasar-Dasar Cloud Firestore
  4. Push dengan Cloud Messaging
← Kembali ke Android Academy