0Pricing
Android Academy · Ders

Firebase Kimlik Doğrulaması

E-posta ve Google ile oturum açma.

Firebase Kimlik Doğrulaması, CoddyKit'te ücretsiz bir Android Academy dersidir. Bu, 4 dersinin 2. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Android Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Android Academy kursu toplamda 4 dersten oluşur.

Firebase Auth Neden Kullanılır?

Firebase Authentication, kullanıcıların oturum açmasının zor kısımlarını yönetir: parolaların güvenli şekilde saklanması, belirteç yenileme, hesap kurtarma ve birçok sağlayıcı (e-posta, Google, Apple, telefon, anonim).

Giriş sunucuları oluşturmak yerine birkaç API çağrısı yapar ve doğrulanmış bir FirebaseUser elde edersiniz. Bu derste e-posta/parola ve Google ile oturum açma işlemlerini gerçekleştireceksiniz.

Oturum Açma Yöntemlerini Etkinleştirme

Kod yazmaya başlamadan önce Firebase konsolunda istediğiniz sağlayıcıları etkinleştirin:

  • Authentication → Sign-in method yoluna gidin.
  • Email/Password seçeneğini etkinleştirin.
  • Google seçeneğini etkinleştirin (bir destek e-postası seçin).

Google ile oturum açmak için proje ayarlarına uygulamanızın SHA-1 parmak izini de eklemeniz gerekir; aksi takdirde oturum açma işlemi bir geliştirici hatasıyla başarısız olur.

FirebaseAuth Örneğini Alma

Giriş noktası Firebase.auth'dur. Bu nesne, mevcut kullanıcıyı ve hesap oluşturma, oturum açma ve oturumu kapatma yöntemlerini sunar.

Kimse oturum açmamışsa auth.currentUser değeri null olur; bu, açılışta hangi ekranın gösterileceğine karar vermenin hızlı bir yoludur.

import com.google.firebase.Firebase
import com.google.firebase.auth.auth

val auth = Firebase.auth

fun isLoggedIn(): Boolean {
    return auth.currentUser != null
}

Hesap Oluşturma

createUserWithEmailAndPassword ile yeni bir kullanıcı kaydedin. Bu işlev bir Task döndürür; ancak coroutine kodunda bunu await() ( kotlinx-coroutines-play-services içinden) ile bekleyebilirsiniz.

İşlem başarılı olduğunda kullanıcı hemen oturum açmış olur.

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)
    }
}

E-posta ile Oturum Açma

Mevcut bir kullanıcıyla oturum açmak için signInWithEmailAndPassword kullanılır. Yapısı, kayıt işleminin yapısına benzer.

Çağrıyı try/catch içine almak, anlaşılır hatalar göstermenizi sağlar — yanlış parola, böyle bir kullanıcının bulunmaması veya hatalı biçimlendirilmiş e-posta.

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
}

Compose ile Giriş Ekranı

Kimlik doğrulamayı küçük bir Compose ekranına bağlayın. E-posta ve parolayı durumda tutun, askıya alınabilir işlevleri bir coroutine kapsamından çağırın ve hataları gösterin.

@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") }
    }
}

Mevcut Kullanıcıyı Okuma

Bir FirebaseUser, kimlik ayrıntılarını taşır: uid (değişmeyen benzersiz kimlik), email, displayName ve photoUrl.

Kullanıcının verilerini Firestore'da saklarken anahtar olarak uid kullanın — benzersiz ve değişmez olduğu garanti edilir.

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)"}")
}

Kimlik Doğrulama Durumunu İzleme

Kimlik doğrulama durumu her an değişebilir (oturum açma, oturumu kapatma, belirteç yenileme). Sürekli sorgulama yapmak yerine tepki vermek için bir AuthStateListener kaydedin.

Bu yöntem, giriş ekranı ile ana ekran arasında otomatik olarak geçiş yapmak için idealdir.

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)

Credential Manager ile Google'da Oturum Açma

Google'da oturum açmanın modern yolu Credential Manager API'sidir. Bir Google ID belirteci istersiniz, ardından bunu bir Firebase kimlik bilgisine dönüştürürsünüz.

Temel adım, döndürülen ID belirtecinden bir GoogleAuthProvider kimlik bilgisi oluşturmak ve bunu signInWithCredential işlevine aktarmaktır.

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()
}

Oturumu Kapatma

Oturumu kapatmak tek bir çağrıyla yapılır: auth.signOut(). Bu işlem yerel kullanıcıyı temizler ve kimlik doğrulama durumu dinleyicinizi çalıştırır.

Google'da oturum açarken, seçici ekranının bir sonraki seferde görünmesi için Credential Manager durumunu da temizleyebilirsiniz. Oturum kapatıldıktan sonra currentUser değeri null olur.

import com.google.firebase.Firebase
import com.google.firebase.auth.auth

fun logout() {
    Firebase.auth.signOut()
    // currentUser is now null; your AuthStateListener fires
}

Kimlik Doğrulama Hatalarını Yönetme

Kimlik doğrulama başarısızlıkları, dallanarak işlem yapabileceğiniz türü belirli özel durumlar oluşturur:

  • FirebaseAuthInvalidUserException — böyle bir kullanıcı yok veya kullanıcı devre dışı.
  • FirebaseAuthInvalidCredentialsException — yanlış parola veya geçersiz e-posta.
  • FirebaseAuthUserCollisionException — e-posta zaten kayıtlı.

Ham yığın izlerini göstermek yerine bunları kullanıcı dostu iletilere dönüştürün.

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"
}

Hızlı Kontrol

Kullanıcı oturum açtığında veya oturumu kapattığında, onu giriş ekranı ile ana ekran arasında otomatik olarak geçirmek istiyorsunuz. En temiz yaklaşım hangisidir?

Özet: Kimlik Doğrulama

Artık kullanıcıların kimliğini Firebase ile doğrulayabilirsiniz:

  • Konsolda sağlayıcıları etkinleştirin; Google için SHA-1 değerini ekleyin.
  • Firebase.auth ile createUserWithEmailAndPassword / signInWithEmailAndPassword kullanın.
  • Google'da oturum açma: bir ID belirteci alın, GoogleAuthProvider kimlik bilgisi oluşturun ve signInWithCredential çağrısını yapın.
  • Kimlik bilgilerini currentUser üzerinden okuyun (veri anahtarınız olarak uid kullanın).
  • AuthStateListener ile değişikliklere tepki verin; oturumu signOut() ile kapatın.

Sırada: bu kullanıcının verilerini Cloud Firestore'da saklamak var.

Sıkça Sorulan Sorular

“Firebase Kimlik Doğrulaması” dersi ücretsiz mi?

Evet — “Firebase Kimlik Doğrulaması” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Android Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Android Academy kursu toplamda 4 dersten oluşur.

“Firebase Kimlik Doğrulaması” dersinde ne öğreneceğim?

E-posta ve Google ile oturum açma. Android Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

Android Academy öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te Android Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 2. dersidir.

“Firebase Kimlik Doğrulaması” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu Android Academy dersinde kod yazıp çalıştırabilir miyim?

Evet. Her Android Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. Firebase'i Kurma
  2. Firebase Kimlik Doğrulaması
  3. Cloud Firestore Temelleri
  4. Cloud Messaging ile Bildirim Gönderme
← Android Academy Sayfasına Dön