Android'de Şifre Tabanlı Hesapları kullanarak Firebase ile kimlik doğrulama

Kullanıcılarınızın kimlik doğrulaması yapmak için Firebase Authentication'ı kullanabilirsiniz. kullanıcıların e-posta adreslerini ve şifrelerini kullanması ve uygulamanızın şifre tabanlı hesaplar.

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 konsolunu kullanın.
  3. E-posta/Şifre ile oturum açmayı etkinleştir:
    1. Firebase konsolunda şu uygulamayı açın: Kimlik Doğrulama bölümü.
    2. Oturum açma yöntemi sekmesinde, E-posta/şifre ile oturum açmayı etkinleştirin yöntemini seçin ve Kaydet'i tıklayın.
  4. Modül (uygulama düzeyinde) Gradle dosyanızda (genellikle <project>/<app-module>/build.gradle.kts veya <project>/<app-module>/build.gradle), Android için Firebase Authentication kitaplığına bağımlılığı ekleyin. Şunu kullanmanızı öneririz: Firebase Android BoM Kitaplık'ta sürüm oluşturmayı kontrol etmek için

    dependencies {
        // Import the BoM for the Firebase platform
        implementation(platform("com.google.firebase:firebase-bom:33.1.2"))
    
        // 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'u kullanarak, Uygulamanız her zaman Firebase Android kitaplıklarının uyumlu sürümlerini kullanacaktır.

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

    Firebase BoM'yi kullanmamayı tercih ederseniz her Firebase kitaplığı sürümünü belirtmeniz gerekir değerini alır.

    Uygulamanızda birden çok Firebase kitaplığı kullanıyorsanız, kitaplık sürümlerini yönetmek için BoM kullanmanızı öneririz. Böylece, uyumlu olur.

    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.0.0")
    }
    
    .
    'nı inceleyin. Kotlin'e özel bir kitaplık modülü mü arıyorsunuz? Başlamak için kalan süre: Ekim 2023 (Firebase BoM 32.5.0), hem Kotlin hem de Java geliştiricileri (ayrıntılar için bkz. bu girişimle ilgili SSS).

Şifre tabanlı hesap oluşturma

Şifreyle yeni bir kullanıcı hesabı oluşturmak için aşağıdaki adımları uygulayın: uygulamanızın oturum açma etkinliği:

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

    Kotlin+KTX

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

    Java

    private FirebaseAuth mAuth;
    // ...
    // Initialize Firebase Auth
    mAuth = FirebaseAuth.getInstance();
  2. Etkinliğinizi başlatırken, kullanıcının 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 kullanıcılar ve uygulamanızın gerektirdiği hesap doğrulama adımları (örneğin, Şifreniz doğru yazılmış ve sizin karmaşıklık düzeyinize uygun şekilde gereksinimlerini karşılayın.
  4. Yeni kullanıcının e-posta adresini ve şifresini ileterek yeni bir hesap oluşturma Hedef: createUserWithEmailAndPassword:

    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ının da oturumu açık olur. Geri çağırmada, getCurrentUser yöntemini kullanabilirsiniz kullanıcının hesap verilerini almak için.

Bir kullanıcının e-posta adresi ve şifresiyle oturum açma

Bir kullanıcının şifresiyle oturum açmasını sağlamaya yönelik adımlar, yeni bir hesap oluşturun. Uygulamanızın oturum açma etkinliğinde aşağıdakileri yapın:

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

    Kotlin+KTX

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

    Java

    private FirebaseAuth mAuth;
    // ...
    // Initialize Firebase Auth
    mAuth = FirebaseAuth.getInstance();
  2. Etkinliğinizi başlatırken, kullanıcının 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 kullanıcının e-posta adresini iletin ve signInWithEmailAndPassword şifresi:

    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ştirin

E-posta adreslerini parametre olarak alan bazı Firebase Authentication yöntemleri e-posta adresinin kayıtlı olması gerekirken diğer e-posta adresinin kayıtlı olması gereken belirli hatalar (örneğin, e-posta adresi ve şifreyle oturum açarken) veya kayıtlı . Bu, kullanıcılara belirli çözümler önermek için yararlı olsa da tarafından kaydedilmiş e-posta adreslerini bulabilmek için kötü niyetli kişiler tarafından yardımcı olur.

Bu riski azaltmak için e-posta numaralandırma korumasını etkinleştirmenizi öneririz. projeniz için Google Cloud gcloud aracını kullanın. Bu etkinleştirildiğinde, özellik, Firebase Authentication'ın hata bildirme davranışını değiştirir: Uygulamanızın, daha kesin hatalara dayanmıyor.

Sonraki adımlar

Kullanıcı ilk kez oturum açtığında yeni bir kullanıcı hesabı oluşturulur ve bilgileri (kullanıcı adı ve şifre, telefon numarası) Numara veya kimlik doğrulama sağlayıcı bilgileri (oturum açan kullanıcı). Bu yeni Firebase projenizin bir parçası olarak saklanır ve aşağıdaki verileri tanımlamak için kullanılabilir: nasıl oturum açarsa açsın, projenizdeki tüm uygulamalarda kullanılır.

  • Uygulamalarınızda, kullanıcıların temel profil bilgilerini şuradan alabilirsiniz: FirebaseUser nesnesini ifade eder. Bkz. Kullanıcıları Yönet.

  • Firebase Realtime Database ve Cloud Storage'ınızda Güvenlik Kuralları'nı kullanarak şunları yapabilirsiniz: auth değişkeninden, oturum açmış kullanıcının benzersiz kullanıcı kimliğini alabilirsiniz. ve kullanıcının hangi verilere erişebileceğini kontrol etmek için kullanılır.

Kullanıcıların çoklu kimlik doğrulama kullanarak uygulamanızda oturum açmasına izin verebilirsiniz yetkilendirme sağlayıcısının kimlik bilgilerini hesaba katılmaz.

Bir kullanıcının oturumunu kapatmak için numaralı telefonu arayın signOut:

Kotlin+KTX

Firebase.auth.signOut()

Java

FirebaseAuth.getInstance().signOut();