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'yı ve GoogleSignInClient nesnesini yapılandırma
Oturum açma etkinliğinizin
onCreate
yönteminde, Google ile Oturum Açma özelliğini şunun için yapılandırın: uygulamanızın gerektirdiği kullanıcı verilerini isteyin. Örneğin, Google ile Oturum Açma özelliğiyle ilgili kullanıcı isteği Kimlik ve temel profil bilgileri için,GoogleSignInOptions
nesnesini ifade eder.DEFAULT_SIGN_IN
Kullanıcılardan e-posta için ayrıcaGoogleSignInOptions
nesnesinirequestEmail
seçeneği.// 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ı belirtin.
requestScopes
ile. En iyi kullanıcı deneyimi için oturum açılırken yalnızca şuna uygun kapsamları isteyin: asgari düzeyde çalışması için gereklidir. Ek kapsamlar iste ihtiyaç duyduğunuzda kullanıcılarınıza izin ekranını göstermek için gerçekleştirdikleri eylemin bağlamını düşünün. Ek Kapsam İsteme bölümünü inceleyin.Ardından, oturum açma etkinliğinizin
onCreate
yönteminde de belirttiğiniz seçenekleri içeren birGoogleSignInClient
nesnesi oluşturun.// Build a GoogleSignInClient with the options specified by gso. mGoogleSignInClient = GoogleSignIn.getClient(this, gso);
Oturum açmış mevcut bir kullanıcının olup olmadığını kontrol edin
Etkinliğinizin onStart
yönteminde, kullanıcının daha önce oturum açmış olup olmadığını kontrol edin
yardımcı olur.
// 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üyorsa kullanıcı uygulamanızda Google ile oturum açmış demektir.
Kullanıcı arayüzünüzü buna göre güncelleyin. Yani oturum açma düğmesini gizleyin, ana etkinliğinizi başlatın veya uygulamanız için uygun olan başka bir işlem yapın.
GoogleSignIn.getLastSignedInAccount
, null
sonucu döndürürse kullanıcı henüz
Google ile uygulamanızda oturum açtınız. Google ile Oturum Açma'yı görüntüleyecek şekilde kullanıcı arayüzünü güncelleme
düğmesini tıklayın.
Uygulamanıza Google ile Oturum Açma düğmesini ekleyin
SignInButton
ekleyin kullanabilirsiniz:<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ı: Google Görüntülü Reklam Ağı yerine varsayılan oturum açma düğmesi grafiğini kullanıyorsanız oturum açma düğmesi öğelerinizi sağlayarak düğmenin
setSize
ile birlikte boyut yöntemidir.// 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) kullanıcının oturum açmasını sağlayan düğmenizinOnClickListener
özelliği:findViewById(R.id.sign_in_button).setOnClickListener(this);
Oturum açma akışını başlatın
Etkinliğin
onClick
yönteminde, oturum açma düğmesine dokunduktan sonra otomatik olarakgetSignInIntent
ile oturum açma amacı yöntemini kullanın ve niyetistartActivityForResult
ile başlatın.@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); }
Amaç başlatıldığında kullanıcıdan oturum açmak için bir Google Hesabı seçmesi istenir somut olarak ortaya koyar.
profile
,email
veopenid
dışında kapsamlar istediyseniz kullanıcıdan, istenen kaynaklara erişim izni vermesi de istenir.Kullanıcı oturum açtıktan sonra bir
GoogleSignInAccount
alabilirsiniz. nesnesini ifade eder.onActivityResult
@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çmış kullanıcıyla ilgili bilgiler içerir kullanıcı adı (ör. kullanıcı adı)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
getEmail
ile kullanıcının e-posta adresini,getId
ile kullanıcının Google kimliğini (istemci tarafında kullanım için) vegetIdToken
ile kullanıcının kimlik jetonunu da alabilirsiniz. Oturumu açık olan kullanıcıyı arka uç sunucuya iletmeniz gerekiyorsa kimlik jetonunu arka uç sunucunuza gönderin sunucu üzerinde jetonu kontrol edin.