Android'de Firebase Authentication'ı Kullanmaya Başlama

Uygulamanızı Firebase'e bağlama

Henüz yapmadıysanız Firebase'i Android projenize ekleyin.

Uygulamanıza Firebase Authentication ekleme

  1. Modül (uygulama düzeyi) Gradle dosyanıza (genellikle <project>/<app-module>/build.gradle.kts veya <project>/<app-module>/build.gradle) Android için Firebase Authentication kitaplığının bağımlılığını ekleyin. Kitaplık sürümlendirmesini kontrol etmek için Firebase Android BoM simgesini kullanmanızı öneririz.

    dependencies {
        // Import the BoM for the Firebase platform
        implementation(platform("com.google.firebase:firebase-bom:33.7.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")
    }

    Firebase Android BoM kullanıldığında uygulamanız Firebase Android kitaplıklarının daima uyumlu sürümlerini kullanır.

    (Alternatif) BoM

    Firebase BoM kullanmamayı seçerseniz her Firebase kitaplık sürümünü bağımlılık satırında belirtmeniz gerekir.

    Uygulamanızda birden fazla Firebase kitaplığı kullanıyorsanız kitaplık sürümlerini yönetmek için BoM'ı kullanmanızı önemle tavsiye ederiz. Bu, tüm sürümlerin uyumlu olmasını sağlar.

    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:23.1.0")
    }
    Kotlin'e özgü bir kitaplık modülü mü arıyorsunuz? Ekim 2023'ten (Firebase BoM 32.5.0) itibaren hem Kotlin hem de Java geliştiricileri ana kitaplık modülünden yararlanabilir (ayrıntılar için bu girişimle ilgili SSS bölümüne bakın).

  2. Bir kimlik doğrulama sağlayıcıyı kullanmak için Firebase konsolunda etkinleştirmeniz gerekir. E-posta/Şifre ile oturum açma özelliğini ve uygulamanız için istediğiniz diğer kimlik sağlayıcıları etkinleştirmek üzere Firebase Authentication bölümündeki Oturum Açma Yöntemi sayfasına gidin.

(İsteğe bağlı) Firebase Local Emulator Suite ile prototip oluşturma ve test etme

Uygulamanızın kullanıcıların kimliğini nasıl doğruladığından bahsetmeden önce, Authentication işlevini prototip haline getirmek ve test etmek için kullanabileceğiniz bir araç grubunu tanıtalım: Firebase Local Emulator Suite. Kimlik doğrulama teknikleri ve sağlayıcılar arasında karar veriyorsanız, Authentication ve Firebase Security Rules'ü kullanarak herkese açık ve özel verilerle farklı veri modellerini denemek ya da oturum açma kullanıcı arayüzü tasarımlarının prototipini oluşturmak istiyorsanız canlı hizmetler dağıtmadan yerel olarak çalışabilmek mükemmel bir fikir olabilir.

Authentication emülatörü, Local Emulator Suite'un bir parçasıdır. Bu emülatör, uygulamanızın emülasyonlu veritabanı içeriği ve yapılandırmasının yanı sıra isteğe bağlı olarak emülasyonlu proje kaynaklarınızla (işlevler, diğer veritabanları ve güvenlik kuralları) etkileşim kurmasını sağlar.

Authentication emülatörünü kullanmanın birkaç adımı vardır:

  1. Emülatöre bağlanmak için uygulamanızın test yapılandırmasına bir kod satırı ekleyin.
  2. Yerel proje dizininizin kökünden firebase emulators:start çalıştırın.
  3. Etkileşimli prototipleme için Local Emulator Suite kullanıcı arayüzünü veya etkileşimli olmayan test için Authentication emülatör REST API'sini kullanma

Ayrıntılı bir kılavuz için Uygulamanızı Authentication emülatörüne bağlama başlıklı makaleyi inceleyin. Daha fazla bilgi için Local Emulator Suite girişine bakın.

Şimdi kullanıcıların kimliğini doğrulama konusuna geçelim.

Mevcut kimlik doğrulama durumunu kontrol etme

  1. FirebaseAuth örneğini tanımlayın.

    Kotlin

    private lateinit var auth: FirebaseAuth

    Java

    private FirebaseAuth mAuth;
  2. onCreate() yönteminde FirebaseAuth örneğini başlatın.

    Kotlin

    // Initialize Firebase Auth
    auth = Firebase.auth

    Java

    // Initialize Firebase Auth
    mAuth = FirebaseAuth.getInstance();
  3. Etkinliğinizi başlatırken kullanıcının şu anda oturum açıp açmadığını kontrol edin.

    Kotlin

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

Yeni kullanıcılar kaydetme

E-posta adresi ve şifre alan, bunları doğrulayan ve ardından createUserWithEmailAndPassword yöntemiyle yeni bir kullanıcı oluşturan yeni bir createAccount yöntemi oluşturun.

Kotlin

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

Yeni kullanıcıları e-posta ve şifreleriyle kaydettirmek için bir form ekleyin ve form gönderildiğinde bu yeni yöntemi çağırın. Hızlı başlangıç örneğimizde bir örnek görebilirsiniz.

Mevcut kullanıcıların oturumunu açma

E-posta adresi ve şifre alan, bunları doğrulayan ve ardından signInWithEmailAndPassword yöntemiyle kullanıcının oturumunu açan yeni bir signIn yöntemi oluşturun.

Kotlin

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

Kullanıcıların e-posta ve şifreleriyle oturum açacağı bir form ekleyin ve form gönderildiğinde bu yeni yöntemi çağırın. Hızlı başlangıç örneğimizde bir örnek görebilirsiniz.

Kullanıcı bilgilerine erişme

Bir kullanıcı başarıyla oturum açtıysa getCurrentUser yöntemini kullanarak dilediğiniz zaman kullanıcının hesap verilerini alabilirsiniz.

Kotlin

val user = Firebase.auth.currentUser
user?.let {
    // Name, email address, and profile photo Url
    val name = it.displayName
    val email = it.email
    val photoUrl = it.photoUrl

    // Check if user's email is verified
    val emailVerified = it.isEmailVerified

    // 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
    // FirebaseUser.getIdToken() instead.
    val uid = it.uid
}

Java

FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
if (user != null) {
    // Name, email address, and profile photo Url
    String name = user.getDisplayName();
    String email = user.getEmail();
    Uri photoUrl = user.getPhotoUrl();

    // Check if user's email is verified
    boolean emailVerified = user.isEmailVerified();

    // 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
    // FirebaseUser.getIdToken() instead.
    String uid = user.getUid();
}

Sonraki adımlar

Diğer kimlik ve kimlik doğrulama hizmetlerini eklemeyle ilgili kılavuzları inceleyin: