Google ile Oturum Açma'yı Android uygulamanıza entegre etmek için Google ile Oturum Açma'yı yapılandırın ve uygulamanızın düzenine oturum açma akışını başlatan bir düğme ekleyin.
Başlamadan önce
Google API Konsolu projesi yapılandırın ve Android Studio projenizi ayarlayın.
Google ile Oturum Açma ve GoogleSignInClient nesnesini yapılandırma
Oturum açma etkinliğinizin
onCreateyönteminde, Google ile oturum açma özelliğini uygulamanızın gerektirdiği kullanıcı verilerini isteyecek şekilde yapılandırın. Örneğin, Google ile oturum açma özelliğini kullanıcıların kimliklerini ve temel profil bilgilerini isteyecek şekilde yapılandırmak içinDEFAULT_SIGN_INparametresini içeren birGoogleSignInOptionsnesnesi oluşturun. Kullanıcıların e-posta adreslerini de istemek içinGoogleSignInOptionsnesnesinirequestEmailseçeneğiyle oluşturun.// Configure sign-in to request the user's ID, email address, and basic // profile. ID and basic profile are included in DEFAULT_SIGN_IN. GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN) .requestEmail() .build();
Google API'lerine erişmek için ek kapsamlar istemeniz gerekiyorsa bunları
requestScopesile belirtin. En iyi kullanıcı deneyimi için oturum açma sırasında yalnızca uygulamanızın minimum düzeyde çalışması için gereken kapsamları isteyin. Kullanıcılarınızın izin ekranını gerçekleştirdikleri bir işlem bağlamında görmeleri için ek kapsamları yalnızca ihtiyacınız olduğunda isteyin. Ek Kapsam İsteğinde Bulunma başlıklı makaleyi inceleyin.Ardından, oturum açma etkinliğinizin
onCreateyönteminde de belirttiğiniz seçeneklerle birGoogleSignInClientnesnesi oluşturun.// Build a GoogleSignInClient with the options specified by gso. mGoogleSignInClient = GoogleSignIn.getClient(this, gso);
Oturum açmış mevcut bir kullanıcı olup olmadığını kontrol etme
Etkinliğinizin onStart yönteminde, kullanıcının Google ile uygulamanızda oturum açıp açmadığını kontrol edin.
// Check for existing Google Sign In account, if the user is already signed in // the GoogleSignInAccount will be non-null. GoogleSignInAccount account = GoogleSignIn.getLastSignedInAccount(this); updateUI(account);
GoogleSignIn.getLastSignedInAccount, null yerine GoogleSignInAccount nesnesi döndürürse kullanıcı, Google ile uygulamanızda oturum açmış demektir.
Kullanıcı arayüzünüzü buna göre güncelleyin. Örneğin, oturum açma düğmesini gizleyin, ana etkinliğinizi başlatın veya uygulamanız için uygun olan başka bir işlemi yapın.
GoogleSignIn.getLastSignedInAccount değeri null ise kullanıcı henüz Google ile uygulamanızda oturum açmamıştır. Google ile Oturum Açma düğmesini gösterecek şekilde kullanıcı arayüzünüzü güncelleyin.
Uygulamanıza Google ile oturum açma düğmesini ekleme
Uygulamanızın düzenine SignInButtonekleyin:<com.google.android.gms.common.SignInButton android:id="@+id/sign_in_button" android:layout_width="wrap_content" android:layout_height="wrap_content" />İsteğe bağlı: Kendi oturum açma düğmesi öğelerinizi sağlamak yerine varsayılan oturum açma düğmesi grafiğini kullanıyorsanız
setSizeyöntemiyle düğmenin boyutunu özelleştirebilirsiniz.// Set the dimensions of the sign-in button. SignInButton signInButton = findViewById(R.id.sign_in_button); signInButton.setSize(SignInButton.SIZE_STANDARD);
Android etkinliğinde (örneğin,
onCreateyönteminde), kullanıcıyı oturum açmak için düğmenizinOnClickListenerözelliğini tıklama sırasında kaydedin:findViewById(R.id.sign_in_button).setOnClickListener(this);
Oturum açma akışını başlatma
Etkinliğin onClickyönteminde,getSignInIntentyöntemiyle bir oturum açma amaçlı intent oluşturarak ve intent'istartActivityForResultile başlatarak oturum açma düğmesine dokunma işlemlerini yönetin.@Override public void onClick(View v) { switch (v.getId()) { case R.id.sign_in_button: signIn(); break; // ... } }private void signIn() { Intent signInIntent = mGoogleSignInClient.getSignInIntent(); startActivityForResult(signInIntent, RC_SIGN_IN); }Niyet başlatıldığında kullanıcıdan oturum açmak için bir Google Hesabı seçmesi istenir.
profile,emailveopeniddışındaki kapsamları istediyseniz kullanıcıdan istenen kaynaklara erişim izni vermesi de istenir.Kullanıcı oturum açtıktan sonra, etkinliğin
onActivityResultyönteminde kullanıcı için birGoogleSignInAccountnesnesi alabilirsiniz.@Override public void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); // Result returned from launching the Intent from GoogleSignInClient.getSignInIntent(...); if (requestCode == RC_SIGN_IN) { // The Task returned from this call is always completed, no need to attach // a listener. Task<GoogleSignInAccount> task = GoogleSignIn.getSignedInAccountFromIntent(data); handleSignInResult(task); } }
GoogleSignInAccountnesnesi, oturum açmış kullanıcıyla ilgili bilgileri (ör. kullanıcının adı) içerir.private void handleSignInResult(Task<GoogleSignInAccount> completedTask) { try { GoogleSignInAccount account = completedTask.getResult(ApiException.class); // Signed in successfully, show authenticated UI. updateUI(account); } catch (ApiException e) { // The ApiException status code indicates the detailed failure reason. // Please refer to the GoogleSignInStatusCodes class reference for more information. Log.w(TAG, "signInResult:failed code=" + e.getStatusCode()); updateUI(null); } }
Ayrıca,
getEmailile kullanıcının e-posta adresini,getIdile kullanıcının Google kimliğini (istemci tarafında kullanım için) vegetIdTokenile kullanıcı için bir kimlik jetonunu da alabilirsiniz. Şu anda oturum açmış olan kullanıcıyı bir arka uç sunucusuna iletmeniz gerekiyorsa kimlik jetonunu arka uç sunucunuza gönderin ve jetonu sunucuda doğrulayın.