Google ile Oturum Açma özelliğini 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
Bir Google API Konsolu projesi yapılandırın ve Android Studio projenizi oluşturun.
Google ile Oturum Açma ve GoogleSignInClient nesnesini yapılandırma
Oturum açma etkinliğinizin
onCreate
yönteminde, uygulamanızın gerektirdiği kullanıcı verilerini istemek için Google ile Oturum Açma'yı yapılandırın. Örneğin, User-ID ve temel profil bilgilerini istemek için Google ile Oturum Açma'yı yapılandırmak üzereDEFAULT_SIGN_IN
parametresiyle birGoogleSignInOptions
nesnesi oluşturun. Kullanıcılar ve e-posta adresleri için de istekte bulunmak üzererequestEmail
seçeneğiyleGoogleSignInOptions
nesnesi 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ı
requestScopes
ile belirtin. En iyi kullanıcı deneyimini sağlamak 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, gerçekleştirdikleri bir işlemin bağlamında izin ekranını görmeleri için ek kapsamları yalnızca ihtiyaç duyduğunuzda isteyin. Ek Kapsam İsteme konusuna bakın.Ardından, oturum açma etkinliğinizin
onCreate
yönteminde belirttiğiniz seçeneklerle birGoogleSignInClient
nesnesi oluşturun.// Build a GoogleSignInClient with the options specified by gso. mGoogleSignInClient = GoogleSignIn.getClient(this, gso);
Mevcut bir kullanıcının oturum açtığını kontrol etme
Etkinliğinizin onStart
yönteminde, bir kullanıcının uygulamanızda Google ile oturum açmış olup olmadığı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 bir GoogleSignInAccount
nesnesi döndürürse kullanıcı, uygulamanızda zaten Google ile oturum açmıştır.
Kullanıcı arayüzünüzü uygun şekilde güncelleyin. Yani oturum açma düğmesini gizleyin, ana etkinliğinizi başlatın veya uygulamanız için uygun olan seçenekleri belirleyin.
GoogleSignIn.getLastSignedInAccount
null
döndürürse kullanıcı, uygulamanızda henüz Google ile oturum açmamıştır. Google ile Oturum Açma düğmesini görüntülemek için kullanıcı arayüzünüzü güncelleyin.
Google ile Oturum Açma düğmesini uygulamanıza ekleyin
Uygulamanızın düzenine
SignInButton
ekleyin:<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 düğme boyutunu
setSize
yöntemiyle ö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,
onCreate
yönteminde), tıklandığında kullanıcının oturum açması içinOnClickListener
anahtarınızı kaydedin:findViewById(R.id.sign_in_button).setOnClickListener(this);
Oturum açma akışını başlatma
Etkinliğin
onClick
yöntemindegetSignInIntent
ile oturum açma amacı oluşturupstartActivityForResult
ile amacı başlatarak oturum açma düğmesine dokunma işlemini gerçekleştirin.@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); }
Niyetin başlatılması kullanıcıdan oturum açacağı bir Google hesabı seçmesini ister.
profile
,email
veopenid
dışındaki kapsamlar istediyseniz kullanıcıdan istenen kaynaklara erişim izni de vermesi istenir.Kullanıcı oturum açtıktan sonra, etkinliğin
onActivityResult
yönteminde kullanıcı için birGoogleSignInAccount
nesnesi 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); } }
GoogleSignInAccount
nesnesi, oturum açan kullanıcıyla ilgili, kullanıcının adı gibi bilgileri 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, kullanıcının e-posta adresini
getEmail
ile, kullanıcının Google kimliğini (istemci tarafı kullanımı için)getId
ile ve kullanıcı kimliği içingetIdToken
ile birlikte alabilirsiniz. Halihazırda oturum açmış olan kullanıcıyı arka uç sunucuya iletmeniz gerekiyorsa kimlik jetonunu arka uç sunucunuza gönderin ve sunucudaki jetonu doğrulayın.