Android Uygulamaya Google Hesabı İle Giriş Yapmayı Entegre Etmek

Enes Koçer
3 min readDec 8, 2022

--

Bu yazımda kullanıcıya Firebase üzerinden Google hesabıyla giriş yaptırmaya alternatif bir yöntem olan Google Play Services Auth kütüphanesi ile Kotlinle yazılan Android uygulamanıza nasıl giriş yaptıracağınızı anlatacağım.

Teknik paragraflar yerine yapmış olduğum bir örnek üzerinden ilerleyelim.

İlk önce google identity sayfasına gidip ön koşulları okuyun ve gerekli kütüphaneyi projenize ekleyin. Son olarak sayfanın altında bulunan Projenizi Yapılandırın butonuna basarak gerekli bilgileri girin.

SHA-1 Anahtarı Oluşturma
İstenilen bilgilerden bir tanesi olan SHA-1 anahtarını aşağıdaki şekilde oluşturabilirsiniz:
Android Studio’nuzda Gradle adlı sekmeye basıp görselde işaretlediğim dosyaya çift tıklamanız yeterli.

Çok kısa bir süre içerisinde Anahtarınız hazır olacaktır. SHA-1 yazan satırdaki kodun tamamını kopyalayıp projenizi yapılandırırken istenilen alana yapıştırabilirsiniz.

Projenizi yapılandırma işlemi tamamlandıktan sonra verilen json dosyasını indirip Project düzeyinde bulunan app klasörünün içine kopyalayın.

Şimdi Android düzeyine gelerek AndroidManifest.xml dosyamıza aşağıdaki izni yazalım.

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

Karşılaştığım her örnek bu işlemi Activty’de gerçekleştirdiği için ben Fragment’ta oluşturmak istedim.
Giriş kodumuzu ve gerekli nesneyi en üstte tanımlamalıyız:

private lateinit var mGoogleSignInClient: GoogleSignInClient
private val SIGN_IN= 9001

onCreate() methodumuzun içine bu servisi kullanabilmek için oluşturma işlemlerini yapmalıyız.
Benim amacım Google hesabıyla giriş yapan kullanıcının Adını Soyadını ve Mail adresini alabilmek olduğu için DEFAULT_SIGN_IN kullandım. Özetle bu özellik temel kullanıcı bilgilerine ve kullanıcı ID’sine erişebilmemize olanak tanır.
requestEmail yazma sebebim ise uygulamanın e-mail bilgilerini isteyerek işlem yapacağını belirtir.

val gso = GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
.requestEmail()
.build()

mGoogleSignInClient = context?.let { GoogleSignIn.getClient(it, gso) }!!

Şimdi onActivityResult() fonksiyonumuzu override edip dönen kodumuzu(requestCode) tanımladığımız SIGN_IN koduyla karşılaştırıyoruz. eğer true dönerse giriş işlemini yapmak için if bloğuna girmiş oluruz.
task değişkenimizi, GoogleSignInAccount nesnesi döndürmesi için şekildeki gibi tanımlarız. task değişkeniyle, giriş yapılan Google hesabına ait yukarıdaki bilgilere erişmemiz için imkanımız olacak.(handleResult metodu dönen bilgileri logladığım fonksiyon)

override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super.onActivityResult(requestCode, resultCode, data)
if (requestCode == SIGN_IN) {
val task =
GoogleSignIn.getSignedInAccountFromIntent(data)
handleResult(task)
Navigation.findNavController(binding.root).navigate(R.id.action_loginFragment_to_homeFragment)
}
}

Bu fonksiyonda ise onCreate içerisinde tanımlamasını yaptığımız nesne(mGoogleSignInClient) aracılığıyla Intent döndüren değişkenimizi oluşturup, startActivityForResult’a parametre olarak veriyoruz.

private fun signIn() {
val signInIntent = mGoogleSignInClient.signInIntent
startActivityForResult(
signInIntent, SIGN_IN
)
}

Son olarak onCreateView() fonksiyonumuz içerisine aşağıdaki kodu yazarak giriş işlemini başlatabiliriz.

binding.ivGoogle.setOnClickListener {
signIn()
}

Bu yazımda sadece Google hesabı ile giriş yapmayla alakalı kodları açıklamaya çalıştım. Eğer kodun tamamını incelemek isterseniz Github repoma göz atabilirsiniz.

Github: https://github.com/kocerenes/GoogleLoginApp

Kaynak
https://developers.google.com/identity/sign-in/android/start-integrating

--

--