Kullanıcılarınızın e-posta adreslerini ve şifrelerini kullanarak Firebase ile kimlik doğrulaması yapmasını sağlamak ve uygulamanızın şifre tabanlı hesaplarını yönetmek için Firebase Authentication'ı kullanabilirsiniz.
Başlamadan önce
Henüz yapmadıysanız Firebase'i Android projenize ekleyin.
- Uygulamanızı henüz Firebase projenize bağlamadıysanız bunu Firebase konsolundan yapın.
- E-posta/Şifre ile oturum açmayı etkinleştirin:
- Firebase konsolunda Auth bölümünü açın.
- Oturum açma yöntemi sekmesinde, E-posta/şifre oturum açma yöntemini etkinleştirin ve Kaydet'i tıklayın.
Modül (uygulama düzeyinde) Gradle dosyanıza (genellikle
<project>/<app-module>/build.gradle.kts
veya<project>/<app-module>/build.gradle
), Android için Firebase Authentication kitaplığına bağımlılığı ekleyin. Kitaplık sürümünü kontrol etmek için Firebase Android BoM'u kullanmanızı öneririz.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 kullanıldığında uygulamanız Firebase Android kitaplıklarının her zaman uyumlu sürümlerini kullanır.
(Alternatif) BoM'u kullanmadan Firebase kitaplığı bağımlılıklarını ekleme
Firebase BoM'yi kullanmamayı seçerseniz her Firebase kitaplığı 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. Böylece tüm sürümlerin uyumlu olması sağlanır.
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") }
Şifre tabanlı hesap oluşturma
Şifreyle yeni bir kullanıcı hesabı oluşturmak için uygulamanızın oturum açma etkinliğinde aşağıdaki adımları tamamlayın:
- 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();
- 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(); } }
- Yeni bir kullanıcı, uygulamanızın kayıt formunu kullanarak kaydolduğunda, uygulamanızın gerektirdiği yeni hesap doğrulama adımlarını (ör. yeni hesabın şifresinin doğru yazıldığını ve karmaşıklık gereksinimlerinizi karşıladığını doğrulamak) tamamlayın.
- Yeni kullanıcının e-posta adresini ve şifresini
createUserWithEmailAndPassword
adlı iş ortağına 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); } } });
getCurrentUser
yöntemini kullanabilirsiniz.
Bir kullanıcının e-posta adresi ve şifresiyle oturum açma
Bir kullanıcının şifreyle oturum açmasını sağlamaya yönelik adımlar, yeni hesap oluşturma adımlarına benzer. Uygulamanızın oturum açma etkinliğinde aşağıdakileri yapın:
- 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();
- 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(); } }
- Bir kullanıcı uygulamanızda oturum açtığında kullanıcının e-posta adresini ve şifresini
signInWithEmailAndPassword
kullanıcısına 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); } } });
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ı gerektiğinde (örneğin, bir e-posta adresi ve şifreyle oturum açarken) veya kullanılmaması gerektiğinde (örneğin, bir kullanıcının e-posta adresini değiştirirken) kayıtlı olması halinde belirli hatalara neden olur. Bu yöntem, kullanıcılara belirli telafiler önermek için yararlı olsa da, kullanıcılarınızın kayıtlı e-posta adreslerini bulmak için kötü niyetli kişiler tarafından kötüye kullanılabilir.
Bu riski azaltmak amacıyla Google Cloud gcloud
aracını kullanarak projenizde e-posta numaralandırma korumasını etkinleştirmenizi öneririz. Bu özelliği etkinleştirdiğinizde Firebase Authentication'ın hata bildirme davranışının değiştiğ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 (kullanıcı adı ve şifre, telefon numarası veya kimlik doğrulama sağlayıcı bilgisi) bağlanır. Bu yeni hesap Firebase projenizin bir parçası olarak depolanır ve kullanıcının nasıl oturum açtığından bağımsız olarak projenizdeki her uygulamada kullanıcıyı tanımlamak için kullanılabilir.
-
Uygulamalarınızda kullanıcının temel profil bilgilerini
FirebaseUser
nesnesinden alabilirsiniz. Kullanıcıları Yönetme sayfasına göz atın. Firebase Realtime Database ve Cloud Storage Güvenlik Kurallarınızda, oturum açan kullanıcının benzersiz kullanıcı kimliğini
auth
değişkeninden alabilir ve 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ı kullanarak uygulamanızda oturum açmasına izin verebilirsiniz.
Bir kullanıcının oturumunu kapatmak için
signOut
numaralı telefonu arayın:
Kotlin+KTX
Firebase.auth.signOut()
Java
FirebaseAuth.getInstance().signOut();