Android Firebase Authentication (Email&Parola ve Google)

Son Google I/O ile birlikte Firebase yenilendi. Gelen yeni özellikler dışında var olanlar da güncellendi. Bunlardan biri de Firebase Authentication.

Çoğu uygulama da kullanıcı kimliğinin bilinmesi gerekir. Güvenli bir şekilde verileri kullanmak ve kullanıcılara tüm cihazlarda kişiselleştirilmiş bir deneyim sunmak için bu gereklidir.

Firebase Authentication, sağladığı SDK’larıyla uygulamanız da basit bir şekilde kullanıcı kimliğini doğrulamada yardımcı olur. Google, Facebook, Twitter, Github, Email/Password ve Anonim olarak kimlik doğrulamayı destekler.

Bu yazımda Android için Email/Password ve Google üzerinden login olmayı anlatmaya çalışacağım.

İlk olarak ;

  • Android Studio 1.5 ya da daha yeni sürümler,
  • Google Play Services SDK’i revision 30 ya da daha yeni,
  • Google Repository SDK’i revision 26 ya da daha yenisi olmalıdır.

Sdk kontrolümüzün ardından Firebase Console da “Create New Project” den proje adı ve ülke seçimi ile bir proje oluşturuyoruz.

Sonrasında “Add Firebase to your Android App” e tıklayıp proje paket adını giriyoruz.Google ile login olma SHA1 e ihtiyaç duyar alt kısmada SHA1 ekliyoruz.(SHA1 için) Ardından oluşturulan google-services.json dosyasını projemizin app klasörüne eklemeyi unutmayalım.

Console ‘ da soldan Auth seçip Sign In Method altından Email/Password ve Google ı Enabled yapıp kaydediyoruz.

Gerekli etkinleştirmeleri yaptıktan sonra Android Studio’ ya dönelim.

İlk olarak proje düzeyinde ki build.gradle a gerekli google-services kodunu ekleyelim.

//build.gradle
dependencies {
classpath 'com.android.tools.build:gradle:2.1.3'
classpath 'com.google.gms:google-services:3.0.0'

// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}

Ardından uygulama düzeyindeki build.gradle a firebase-auth ve play-services-auth ı compile edip en alt satıra gerekli plugin işlemini ekleyelim.

// app/build.gradle
dependencies {

compile 'com.android.support:design:24.2.1'
compile 'com.android.support:appcompat-v7:24.0.0'
compile 'com.google.firebase:firebase-auth:9.4.0'
compile 'com.google.android.gms:play-services-auth:9.4.0'

}

apply plugin: 'com.google.gms.google-services'

Sync Now diyerek gradle işlemlerini tamamlayalım.

Gerekli strings.xml ve colors.xml sınıflarımız şu şekilde;

//strings.xml
<resources>
<string name="app_name">FirebaseAuth</string>
<string name="Email">Email</string>
<string name="Parola">Parola</string>
<string name="cikisyap">Çıkış Yap</string>
<string name="kullaniciSil">Kullanıcıyı Sil</string>
</resources>

//colors.xml
<?
xml version="1.0" encoding="utf-8"?>
<resources>
<color name="colorPrimary">#51a5cf</color>
<color name="colorPrimaryDark">#539ac4</color>
<color name="colorAccent">#ff4081</color>
<color name="backgroundColor">#eedd82</color>
<color name="uyeButtonColor">#Ffcc00</color>

</resources>

AndroidManifest.xml i açıp internet iznini sağlayalım.

<uses-permission android:name="android.permission.INTERNET" />

Email&Password ile Hesap Oluşturma

Email ve parola belirleyip hesap oluşturabileceğimiz bir activity ve layout a ihtiyacımız var.

Layout, email ve parolamızı gireceğimiz 2 edittext, 1 üye ol butonu ve login sayfasına geri dönmemize yardımcı olacak bir butondan oluşsun.

Kimlik doğrulama (login olma) işlemleri için FirebaseAuth sınıfını kullanıyoruz. getInstance() metoduyla da bu sınıfın referans olduğu nesneleri kullanabilmekteyiz.

Yeni bir kullanıcı oluşturmak için createUserWithEmailAndPassword(email,parola) metodunu kullanıyoruz.OnCompleteListener dinleyicisi ile de sonuçta yapılacak işlemleri belirliyoruz.

AndroidManifest.xml de activity i tanımlamayı unutmayalım.

Oluşturulan hesabı console üzerinden de görebiliriz.

Email & Password ve Google ile Giriş Yapma

Email&Password ile login olmak için yine FirebaseAuth sınıfını kullanarak email ve parola parametrelerinden oluşan signInWithEmailAndPassword(email,parola) metodunu kullanıyoruz. onCompleteListener dinleyicisi kullanarak işlem sonucunda yapılcakları belirtiyoruz.

Google ile login olmak için ilk olarak Google Sign In Options yapılandırmasını yapıyoruz.

GoogleSignInAccount nesnesinden ID token’ı alıp, bu Firebase güvenlik referansını kullanarak Firebase ile yetkilendirme işlemini gerçekleştiriyoruz.

LoginActivity i de AndroidManifest.Xml de uygulamanın açılış activity si olarak tanımlayalım.

PAROLA SIFIRLAMA

Email&Parola ile giriş yapma da kullandığımız parolamızı emailimize gönderilecek bir bağlantı üzerinden yenileyebiliyoruz.

FirebaseAuth sınıfı ile ulaşabileceğimiz sendPasswordResetEmail(email) metoduyla onCompleteListener dinleyicisini kullanıp işlemin başarılı sonuçlanması durumunda parametrede verilen emaile gerekli parola yenileme bağlantısı gönderiliyor.

AndroidManifest.xml de activity tanımlamasını yapmayı unutmayalım.

Maile gelen bağlantı;

Linkteki parola yenileme kısmı;

PROFİL EKRANI

Giriş yaptıktan sonra açılcak ekranımıza geldiğimizde, 1 TextView ile bir merhaba mesajı verelim ekrana. Altında ise kullanıcı hesabını silme ve çıkış yapma butonları olsun.

Bir AuthStateListener dinleyicisi oluşturuyoruz ve bu dinleyici onAuthStateChanged bölümünü çalıştırır. Buradaki getCurrentUser metodu ile kullanıcı verilerine ulaşabilmekteyiz.

FirebaseUser sınıfını kullanarak delete() metodu ile kullanıcı hesabını silebilmekteyiz.

onCompleteListener dinleyicisi ile de işlem sonunda olacakları düzenliyoruz.

FirebaseAuth sınıfı ile signOut() metodunu kullanarak da oturumu kapatabilmekteyiz.

MainActivity i de AndroidManifest.xml de tanımlayalım.

Bu şekilde Android de Firebase kullanarak gayet basit bir şekilde login olabilmekteyiz.

Projenin tamamına buradan ulaşabilirsiniz.