ÇEVİRİ : Google Hesabı ile Login Olma
Bayramdı seyrandı, düğündü kınaydı, memleket hasretiydi, eş dost akraba ziyaretleriydi, arkadaş buluşmalarıydı derken epey uzun bir süre geçti…
Ama inanır mısınız aklım hep burdaydı. 😛 😀 😀
Hiç başka birşey düşünemedim. 😛
Neyse geyiği bırakıyorum. (sıkıldım)
Uzun bir süredir memlekette olmam sebebiyle anlatımlara uzun bir ara vermek zorunda kaldım. Ama telafi etmeye çalışacağım 😉 Memlekette boş bulduğum zamanlarda 3 5 çeviri yapmaya çalıştım..
Uzatmıyorum tamam.
Android üzerinde Google Oturumu (Sign-In) Kullanarak Yetkilendirme
Uygulamana entegre ettiğin Google Oturum Açma (Sign-In) sayesinde; kullanıcılarının, Google hesaplarını kullanarak, Firebase üzerinde kendilerini yetkilendirmesine izin verebilirsin.
Başlamadan Önce
- Android projene Firebase’i ekle.
- Firebase Yetkilendirme (Authentication) ve Google Oturum Açma (Sign-In) için gerekli bağımlılıkları uygulama (app-level) seviyesindeki build.gradle dosyana ekle:
12compile 'com.google.firebase:firebase-auth:9.4.0'compile 'com.google.android.gms:play-services-auth:9.4.0' - Eğer uygulamanı henüz bir Firebase projesine bağlamadıysan, bunu Firebase konsolundan yap.
- Firebase konsolundaki Google Oturum Açma (Sign-In) özelliğini aktif (Enable) yap :
- Firebase konsol içindeki, Auth bölümünü aç.
- Sign in methodsekmesindeki, Google oturum açma (sign-in) özelliğini aktif (enable) yap ve Save’e tıkla.
Google Sign-In, SHA1 parmakizi sistemine ihtiyaç duyar. Detaylı bilgi için: Authenticating Your Client .
Firebase ile Yetkilendirme
- Integrating Google Sign-In into Your Android App sayfasındaki adımları takip ederek Google (Sign-In) Oturum açma’yı uygulamanıza entegre et. GoogleSignInOptions nesnesini ayarladığında, requestIdToken metodunu çağır:
GoogleSignInActivity.java
12345678// Google Sign In Options AyarlamakGoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN).requestIdToken(getString(R.string.default_web_client_id)).requestEmail().build();Sunucunuzun istemci ID’sini (server’s client ID), requestIdToken metoduna girmek zorundasınız. OAuth 2.0 istemci ID bulmak için:
- API konsoldaki Credentials sayfasını aç.
- Web uygulaması (application) tipi istemci (client) ID’si, backend sunucunuzun OAuth 2.0 istemci ID’sidir.
Google (Sign-In) Oturum açma entegre edildikten sonra, oturum açma activity’niz aşağıdaki gibi kodlar içermelidir:
123456789101112131415161718192021222324private void signIn() {Intent signInIntent = Auth.GoogleSignInApi.getSignInIntent(mGoogleApiClient);startActivityForResult(signInIntent, RC_SIGN_IN);}@Overridepublic void onActivityResult(int requestCode, int resultCode, Intent data) {super.onActivityResult(requestCode, resultCode, data);// Result returned from launching the Intent from GoogleSignInApi.getSignInIntent(...);if (requestCode == RC_SIGN_IN) {GoogleSignInResult result = Auth.GoogleSignInApi.getSignInResultFromIntent(data);if (result.isSuccess()) {// Google oturum açma başarılı olduğunda, Firebase ile yetkilendirGoogleSignInAccount account = result.getSignInAccount();firebaseAuthWithGoogle(account);} else {// Google Oturum açma başarısız olduğunda, kullanıcı arayüzünü (UI) uygun olarak güncelle// ...}}}
- Oturum açtığın sayfanın (activity) onCreate metodu içerisinde, FirebaseAuth nesnesinin paylaşılan durumunu al:
12345private FirebaseAuth mAuth;// ...mAuth = FirebaseAuth.getInstance(); - Kullanıcının oturum açma durumundaki değişikliklere yanıt veren bir AuthStateListener ayarla:
123456789101112131415161718192021222324252627282930313233343536373839private FirebaseAuth.AuthStateListener mAuthListener;// ...@Overrideprotected void onCreate(Bundle savedInstanceState) {// ...mAuthListener = new FirebaseAuth.AuthStateListener() {@Overridepublic void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) {FirebaseUser user = firebaseAuth.getCurrentUser();if (user != null) {// Kullanıcı oturum açtığındaLog.d(TAG, "onAuthStateChanged:signed_in:" + user.getUid());} else {// Kullanıcı oturum kapattığındaLog.d(TAG, "onAuthStateChanged:signed_out");}// ...}};// ...}@Overridepublic void onStart() {super.onStart();mAuth.addAuthStateListener(mAuthListener);}@Overridepublic void onStop() {super.onStop();if (mAuthListener != null) {mAuth.removeAuthStateListener(mAuthListener);}} - Oturum açma işlemi gerçekleştikten sonra, bir Firebase güvenlik referansı (credential) oluşturmak için; GoogleSignInAccount nesnesinden ID token ‘ı al ve bu Firebase güvenlik referansını kullanarak Firebase ile yetkilendirme işlemini gerçekleştir:
123456789101112131415161718192021222324252627private void firebaseAuthWithGoogle(GoogleSignInAccount acct) {Log.d(TAG, "firebaseAuthWithGoogle:" + acct.getId());AuthCredential credential = GoogleAuthProvider.getCredential(acct.getIdToken(), null);mAuth.signInWithCredential(credential).addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {@Overridepublic void onComplete(@NonNull Task<AuthResult> task) {Log.d(TAG, "signInWithCredential:onComplete:" + task.isSuccessful());/* Eğer oturum açma işlemi başarısız olursa, kullanıcıya bir mesaj gösterilir.Eğer oturum açma işlemi başarılı olursa, yetki durumu dinleyicisisi(AuthStateListener) bildirilmiş olacak ve oturum açan kullanıcı dinleyiciiçerisinde işlenebilir hale gelecek.*/if (!task.isSuccessful()) {Log.w(TAG, "signInWithCredential", task.getException());Toast.makeText(GoogleSignInActivity.this, "Yetkilendirme Başarısız.",Toast.LENGTH_SHORT).show();}// ...}});}
Eğer signInWithCredential cağrısı başarılmışsa; AuthStateListener dinleyicisi, onAuthStateChanged bölümünü çalıştırır. Bu bölüm içerisinde; getCurrentUser metodunu kullanarak kullanıcı hesabının verilerini alabilirsiniz.
Sonraki adımlar
Bir kullanıcı ilk kez oturum açtıktan sonra, yeni bir kullanıcı hesabı yaratılır ve bu hesap; kullanıcının girmiş olduğu kullanıcı adı ve şifre, yada yetki sağlayıcısı (auth provider) bilgileri ile birlikte güvenlik referansına bağlanır. Bu yeni hesap Firebase projenizin bir bölümünde saklanmış durumdadır, ve projeniz içindeki diğer çapraz platform uygulamalarında (iOS, Web gibi..) bir kullanıcı tanımlamak için, nasıl oturum açıldığına bakılmaksızın kullanılabilir.
- Uygulamanız içerisinde, kullanıcının basit profil bilgisini FirebaseUser nesnesinden alabilirsiniz. Bknz: Manage Users.
- Firebase Realtime Database ve Firebase Storage Security Rules içerisindeki auth değişkeninden oturum açan kullanıcının ID’sini alabilir, ve hangi veriye hangi kullanıcının erişebileceğini kontrol edebilirsiniz.
Yetki sağlayıcı güvenlik referanslarını mevcut bir kullanıcı hesabına bağlayarak; uygulamanızı kullanan kullanıcıların, birden çok yetkilendirme sağlayıcısı (Facebook, Twitter, Google, Github) ile oturum açmasına izin verebilirsiniz.
Kullanıcının oturumunu kapatmak için signOut metodunu çağır:
1 2 3 |
FirebaseAuth.getInstance().signOut(); |
Çevirinin Orjinali : https://firebase.google.com/docs/auth/android/google-signin
Çeviren : Umut ONUR
1 Response
[…] makalede http://umutonur.com/ceviri-google-hesabi-ile-login-olma/ adresinde yapmış olduğum çevirideki olayları ayrıntılarıyla anlatmaya […]