Android Firebase Authentication ( Kimlik Doğrulama )

Merhaba arkadaşlar,
Bugün dersimizde sizlere Firebase kütüphanesi kullanarak  Firebase Authentication işleminin nasıl yapılacağını anlatacağım. Firebase ile ilgili realtime database kullanımını bu dersimizde ayrıntılı bir şekilde anlatmıştım. Şimdi ( Kimlik Doğrulama ) adımlarını incelemeye başlayalım.

Öncelikle Android Studio da yeni bir proje oluşturuyoruz ve Firebase Authentication ile ilgili işlemlerini gerçekleştirebilmemiz için projemizi console firebase tanıtıyoruz. Kimlik doğrulama ile ilgili gerekli fonksiyonları kullanabilmemiz için Android Studio da Tools->Firebase->Authentication kısmını açıyoruz. Email and password authentication seçeneğini tıkladıktan sonra karşımıza çıkan adımları tek tek uyguluyoruz.

Firebase Authentication Ayarları

1-) Connect your app to Firebase

2-) Add Firebase Authentication to your app

Bu adımları sırayla uyguladıktan sonra seçeneklerin yeşil olduğunu göreceksiniz böylece hem uygulamamızı firebase tanıtmış olduk hem de authentication ile ilgili kodları ve gerekli dosyaları projemize otomatik olarak import etmiş olduk. ( build.gradle incelediğinizde firebase auth compile olarak geldiğini göreceksiniz. )

build.gradle

Firebase authentication için bir çok kimlik doğrulama yönetimi geliştiricilere sunmaktadır (Email/Password , Phone, Google, Facebook, Twitter, Github ve Anonymous ) ben bu uygulamamda E posta ve parola ile girişi kullanacağım ; uygulama içinde kullanabilmemiz içinde bu yöntemi aktif hale getirmemiz gerekiyor. Aşağıdaki ekran görüntüsünde gördüğünüz gibi bu linkten ilgili projemizi seçip Authentication->SIGN-IN Method->Email/Password statusu Enabled yapıyoruz.

Şimdi gelelim kodlamaya ; uygulama ilk açılışında çalışacak olan MainActivity sınıfımız aşağıdadır. Kaynak kodları incelersek eğer MainActivity çalıştığında eğer authenticate olmuş bir kullanıcı var ise ProfileActivity sayfasını açtırıyoruz eğer yok ise karşımıza gelen ekranda login butonu ve altında da register sayfasına yönlendirdiğimiz bir textview olduğunu göreceksiniz. signInWithEmailAndPassword methodu kullanıcıdan email adresi ile parola alıyor ve login isteğinde bulunuyor. Daha sonra addOnCompleteListener ile de işlemin başarılı olup olmadığını kontrol ediyoruz.

MainActivity.java 

Eğer kullanıcı authenticate olmadıysa yani sisteme kayıtlı değilse kimlik doğrulamasını sağlamak için üye ol kısmından RegisterActivity sayfasına yönleniyor. Kodları incelediğimizde; createUserWithEmailAndPassword methodu kullanıcı adını ( kullanıcı email adresi ) ile parolasını alıyor yine addOnCompleteListener ile de işlemin başarılı olup olmadığını kontrol ediyoruz eğer register işleminde sorun yok ise kullanıcıyı ProfileActivity sayfasına yönlendiriyoruz. ( Kaydolma işleminde Firebase tarafından belirlenen bazı kurallar var örneğin parola uzunluğu 6 haneden daha kısa olamaz ayrıca girdiğiniz e-posta adresi kontrolünü de firebase sağlıyor eğer e posta formatından farklı bir değer ile sisteme register olmaya çalışırsanız yine hata alacaksınız. Eğer daha önceden üye olunan bir e-posta adresi ile üye olmaya çalışırsanız da yine hata alacaksınız. )

RegisterActivity.java

Uygulamamıza üye olduğumuzda veya giriş yaptığımızda karşımıza ProfileActivity sayfası gelmektedir. Buradaki kodları incelersek eğer ; FirebaseAuth instance üzerinden güncel kullanıcıya ulaşıyoruz ve firebase user ın bize sağlamış olduğu bazı methodlar var onları uygulamamızda kullanıyoruz örneğin; updatePassword methodu ile kullanıcının parolasını, updateEmail methodu ile de kullanıcının e-posta adresini güncelleyebiliyoruz. Çıkış Yap butonuna basmadığımız sürece veya uygulamayı silmediğimiz sürece kullanıcı session devamlı açık kalacak ve bir kez giriş yaptıktan sonra bir daha kullanıcı adı ve parola adımlarını sormayacaktır. Kullanıcının auth durumunda herhangi bir değişiklik olduğu zaman dinleyici methodumuz FirebaseAuth.AuthStateListener değişikliği yakalayıp gerekli işlemleri yapacaktır. Örneğin kullanıcı e-posta adresini değiştirdi veya parolasını değiştirdi bu durumda kullanıcınında kimlik doğrulaması değişmiş oldu ve bizde direk olarak uygulamadan çıkış yaptırıyoruz.

ProfileActivity.java

Evet arkadaşlar gördüğünüz gibi Android de Firebase Authentication işlemleri bu kadar kolay sizlere örnek olması açısından e-posta/parola kullanarak nasıl oturum açılır , nasıl sisteme üye olunur, parola ve e-posta nasıl değiştirilir gibi adımları gerçekleştirdik. Konuyu daha iyi anlamak için kaynak kodu indirip çalıştırmanız faydalı olacaktır. Bir sonraki dersimizde Firebase Realtime Database ile Firebase Authentication işlemlerini birleştirerek bir chat uygulaması örneği yapacağım.

Tüm Android Ders, Proje ve Kaynak Kodlar için tıklayınız.

Mobilhanem.com üzerinden anlattığımız mobil uygulama geliştirme derslerine devam edeceğiz. Konu hakkında sorunuzu yorum alanından sorabilirsiniz. Konu dışı sorularınızı ve tüm yazılımsal sorularınızı sorucevap.mobilhanem.com sitemizden de sorabilirsiniz.

Bir dahaki dersimizde görüşmek dileğiyle..

Alper Beyler

Yüksek Lisans: Çankaya Üniversitesi / Bilgisayar Mühendisliği
Lisans: Çankaya Üniversitesi / Bilgisayar Mühendisliği (4/3.30) (2010-2014)
Lisans : Viyana Teknik Üniversitesi / Bilgisayar Bilimleri (2013)

16 Yorum

  • Merhaba. Uygulama içi satın alma ile uygulamanın bir ögesini satın alan kullanıcı daha sonra cihaz değiştirse bile aynı google hesabıyla o öğeyi kullanmaya devam edebiliyor. Tekrar o öğeyi satın almasına gerek kalmıyor. Bu nasıl yapılıyor? Yardımcı olursanız sevinirim

  • Merhaba
    Uygulama da userNameTxt.setText(“Kullanıcı Adı:” + ” ” + auth.getCurrentUser().getEmail()); kısmında hata alıyorum. Bunu nasıl düzeltebilirim.Yardımcı olursanız sevinirim

  • merhaba,
    anlatım için teşekkürler. mail doğrulama veya şifre resetleme mesajları ingilizce olarak geliyor. bu mesajları türkçeye çevirebiliyor muyuz? ve mesajları özelleştirebiliyor muyuz?

    örn uyguloama logomuzu vb ekleyebiliyor muyuz?

    • firebase de custom email veya custom password reset email diye bir kisim var.oradaki secenekleri degistirebilirsin.

  • console da oturum açma etkin olmasına rağmen şu hatayı verdi.

    the given sign in provider is disable for this firebase project. enable it in the firebase console,under the sign in method tab of the auth section

    belli bir süre geçmesi gerekiyor mu ayarlar için. veya bu hata neden çıkıyor olabilir yardımcı olabilirseniz sevinirim.

  • Kullanıcı adı ve şifreyi girdiğinde database den belirlediğimiz URL’ye gitmesini nasıl sağlarız
    Yani kullanıcı kayıtı yaptırdığında webview üzerinden kayıtlı her bir kişi için belirlediğimiz URL’ye yönlendirmek istiyorum bu adresleri database den yapmak istiyorum
    Bunun için örnek bir kod var mı?

  • change_txt ve close_txt için hata alıyorum. Tanımlanan yeri göremedim ne işe yarıyor bunlar yardımcı olur musunuz?

  • Merhaba,

    Üyelik sistemi için auth mu kullanmak daha mantıklı? Yoksa database mi? Bu arada kullanıcının yazdığı textleri (durum paylaşımlarını) database de mi saklamamız gerekiyor yoksa storage mı? Aralarında çok ince farklar var sanırım bu arada Auth kullanılırsa kullanıcı uygulamayı kapatıp açtığında halen giriş yapılı kalıyor mu? Bir sorum daha olacak 🙂 İnanın cevaplarsanız çok müteşekkir olurum . Auth ile giriş yaptırdığımızda database’e kaydettiğimiz text’leri nasıl ve neye göre çekmemizi tavsiye edersiniz? Sevgiler 🙂

Haftalık Bülten

Mobilhanem'de yayınlanan dersleri haftalık mail almak ister misiniz?