Catch up on highlights from Firebase at Google I/O 2023. Learn more

Android'de Parola Tabanlı Hesapları kullanarak Firebase ile kimlik doğrulaması yapın

Firebase Authentication'ı, kullanıcılarınızın e-posta adreslerini ve parolalarını kullanarak Firebase ile kimlik doğrulaması yapmasına izin vermek ve uygulamanızın parola tabanlı hesaplarını yönetmek için kullanabilirsiniz.

Sen başlamadan önce

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

  2. Uygulamanızı henüz Firebase projenize bağlamadıysanız, bunu Firebase konsolundan yapın.
  3. E-posta/Parola ile oturum açmayı etkinleştir:
    1. Firebase konsolunda Kimlik Doğrulama bölümünü açın.
    2. Oturum açma yöntemi sekmesinde, E-posta/parola oturum açma yöntemini etkinleştirin ve Kaydet'e tıklayın.
  4. Modül (uygulama düzeyi) Gradle dosyanızda (genellikle <project>/<app-module>/build.gradle ), Firebase Authentication Android kitaplığı için bağımlılığı ekleyin. Kitaplık sürüm oluşturmayı kontrol etmek için Firebase Android BoM'yi kullanmanızı öneririz.

    Kotlin+KTX

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

    Firebase Android BoM'yi kullandığınızda, uygulamanız her zaman Firebase Android kitaplıklarının uyumlu sürümlerini kullanır.

    (Alternatif) BoM kullanmadan Firebase kitaplığı bağımlılıkları ekleyin

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

    Uygulamanızda birden çok Firebase kitaplığı kullanıyorsanız kitaplık sürümlerini yönetmek için tüm sürümlerin uyumlu olmasını sağlayan BoM'yi kullanmanızı kesinlikle öneririz.

    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:22.0.0'
    }
    

    Java

    dependencies {
        // Import the BoM for the Firebase platform
        implementation platform('com.google.firebase:firebase-bom:32.1.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'yi kullandığınızda, uygulamanız her zaman Firebase Android kitaplıklarının uyumlu sürümlerini kullanır.

    (Alternatif) BoM kullanmadan Firebase kitaplığı bağımlılıkları ekleyin

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

    Uygulamanızda birden çok Firebase kitaplığı kullanıyorsanız kitaplık sürümlerini yönetmek için tüm sürümlerin uyumlu olmasını sağlayan BoM'yi kullanmanızı kesinlikle öneririz.

    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:22.0.0'
    }
    

Parola tabanlı bir hesap oluşturun

Parola ile yeni bir kullanıcı hesabı oluşturmak için uygulamanızın oturum açma etkinliğinde aşağıdaki adımları tamamlayın:

  1. Kayıt etkinliğinizin onCreate yönteminde, FirebaseAuth nesnesinin paylaşılan örneğini alın:

    Kotlin+KTX

    private lateinit var auth: FirebaseAuth
    // ...
    // Initialize Firebase Auth
    auth = Firebase.auth

    Java

    private FirebaseAuth mAuth;
    // ...
    // Initialize Firebase Auth
    mAuth = FirebaseAuth.getInstance();
  2. Aktivitenizi başlatırken, kullanıcının şu anda oturum açmış olup olmadığını kontrol edin:

    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();
        }
    }
  3. Yeni bir kullanıcı, uygulamanızın kayıt formunu kullanarak kaydolduğunda, yeni hesabın parolasının doğru yazıldığını ve karmaşıklık gereksinimlerinizi karşıladığını doğrulamak gibi, uygulamanızın gerektirdiği tüm yeni hesap doğrulama adımlarını tamamlayın.
  4. Yeni kullanıcının e-posta adresini ve parolasını createUserWithEmailAndPassword öğesine ileterek yeni bir hesap oluşturun:

    Kotlin+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);
                    }
                }
            });
    Yeni hesap oluşturulduysa, kullanıcı da oturum açmıştır. Geri aramada, kullanıcının hesap verilerini almak için getCurrentUser yöntemini kullanabilirsiniz.

Bir e-posta adresi ve şifre ile bir kullanıcı oturumu açın

Bir kullanıcıyı parola ile oturum açma adımları, yeni bir hesap oluşturma adımlarına benzer. Uygulamanızın oturum açma etkinliğinde aşağıdakileri yapın:

  1. Oturum açma etkinliğinizin onCreate yönteminde, FirebaseAuth nesnesinin paylaşılan örneğini alın:

    Kotlin+KTX

    private lateinit var auth: FirebaseAuth
    // ...
    // Initialize Firebase Auth
    auth = Firebase.auth

    Java

    private FirebaseAuth mAuth;
    // ...
    // Initialize Firebase Auth
    mAuth = FirebaseAuth.getInstance();
  2. Aktivitenizi başlatırken, kullanıcının şu anda oturum açmış olup olmadığını kontrol edin:

    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();
        }
    }
  3. Bir kullanıcı uygulamanızda oturum açtığında, signInWithEmailAndPassword için kullanıcının e-posta adresini ve şifresini iletin:

    Kotlin+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);
                    }
                }
            });
    Oturum açma başarılı olursa, devam etmek için döndürülen FirebaseUser kullanabilirsiniz.

Önerilen: E-posta numaralandırma korumasını etkinleştir

E-posta adreslerini parametre olarak alan bazı Firebase Kimlik Doğrulama yöntemleri, e-posta adresinin kaydedilmesi gerektiğinde (örneğin, bir e-posta adresi ve şifreyle oturum açarken) kayıtlı olmaması veya kullanılmaması gerektiğinde kaydedilmesi (örneğin, bir kullanıcının e-posta adresini değiştirirken). Bu, kullanıcılara belirli çareler önermek için yararlı olsa da, kullanıcılarınız tarafından kaydedilen e-posta adreslerini keşfetmek için kötü niyetli aktörler tarafından da kötüye kullanılabilir.

Bu riski azaltmak için Google Cloud gcloud aracını kullanarak projeniz için e-posta numaralandırma korumasını etkinleştirmenizi öneririz. Bu özelliğin etkinleştirilmesinin Firebase Authentication'ın hata raporlama davranışını değiştirdiğini unutmayın: uygulamanızın daha spesifik hatalara dayanmadığından emin olun.

Sonraki adımlar

Bir kullanıcı ilk kez oturum açtıktan sonra, yeni bir kullanıcı hesabı oluşturulur ve kullanıcının oturum açtığı kimlik bilgilerine (yani, kullanıcı adı ve parolası, telefon numarası veya kimlik doğrulama sağlayıcı bilgileri) bağlanır. Bu yeni hesap, Firebase projenizin bir parçası olarak saklanır ve kullanıcının nasıl oturum açtığına bakılmaksızın projenizdeki her uygulamada bir kullanıcıyı tanımlamak için kullanılabilir.

  • Uygulamalarınızda, kullanıcının temel profil bilgilerini FirebaseUser nesnesinden alabilirsiniz. Bkz . Kullanıcıları Yönetin .

  • Firebase Gerçek Zamanlı Veritabanı ve Bulut Depolama Güvenlik Kurallarınızda , oturum açmış kullanıcının benzersiz kullanıcı kimliğini auth değişkeninden alabilir ve bunu, bir kullanıcının hangi verilere erişebileceğini kontrol etmek için kullanabilirsiniz.

Kimlik doğrulama sağlayıcı kimlik bilgilerini mevcut bir kullanıcı hesabına bağlayarak, kullanıcıların birden fazla kimlik doğrulama sağlayıcısı kullanarak uygulamanızda oturum açmasına izin verebilirsiniz.

Bir kullanıcının oturumunu kapatmak için signOut öğesini arayın:

Kotlin+KTX

Firebase.auth.signOut()

Java

FirebaseAuth.getInstance().signOut();