Google Kimlik Hizmetleri (GIS), geliştiriciler için uygulanması kolay bir pakette, kullanıcılara kolay ve güvenli bir şekilde oturum açma ve kaydolma imkanı sunan yeni bir API kümesidir. Bu dokümanda, bir kullanıcı "Google ile Oturum Aç" düğmesine dokunduğunda oturum açma veya kaydolma akışını başlatmak için kullanılabilecek yeni bir Google ile Oturum Açma API'si (Coğrafi Bilgi Sistemi'nin parçası) açıklanmaktadır. Oturum açma akışları için mevcut Google ile Oturum Açma API'lerinin yerine bu API kullanılabilir.
Bu API'yi yalnızca kullanıcı açıkça Google ile oturum açma niyetini gösterdiğinde kullanmalısınız. Örneğin, kullanıcı uygulamanızda "Google ile oturum aç" düğmesini tıkladığında bu API'yi kullanın.
Bu API'yi, uygulama başlatılırken veya alışveriş sepetine öğe ekleme gibi başka bir tetikleyiciye yanıt olarak kullanıcıdan oturum açmasını istemek için kullanmamalısınız. Bu kullanım alanları için One Tap ile oturum açma ve kaydolma seçeneğini kullanın.
Google ile Oturum Açma akışını yeni API ile başlattığınızda şu kullanıcı arayüzü görüntülenir:
Başlamadan önce
Bir Google API Konsolu projesi yapılandırın ve Android Studio projenizi ayarlayın.
Oturum açma isteği gönderin
Identity API'yi kullanarak Google ile Oturum Açma akışını başlatmak için bir GetSignInRequest
nesnesi oluşturun. Ardından, SignInClient
nesne çağrısında
getSignInIntent
. Bu çağrı eşzamansız olup başarılı olursa iletişim kutusunu başlatmak için bir PendingIntent
sağlar.
private static final int REQUEST_CODE_GOOGLE_SIGN_IN = 1; /* unique request id */
private void signIn() {
GetSignInIntentRequest request =
GetSignInIntentRequest.builder()
.setServerClientId(getString(R.string.server_client_id))
.build();
Identity.getSignInClient(activity)
.getSignInIntent(request)
.addOnSuccessListener(
result -> {
try {
startIntentSenderForResult(
result.getIntentSender(),
REQUEST_CODE_GOOGLE_SIGN_IN,
/* fillInIntent= */ null,
/* flagsMask= */ 0,
/* flagsValue= */ 0,
/* extraFlags= */ 0,
/* options= */ null);
} catch (IntentSender.SendIntentException e) {
Log.e(TAG, "Google Sign-in failed");
}
})
.addOnFailureListener(
e -> {
Log.e(TAG, "Google Sign-in failed", e);
});
}
Oturum açma sonuçlarını işleme
onActivityResult
içinde bir SignInCredential
alın. getSignInCredentialFromIntent
tarafından döndürülen SignInCredential
nesnesi, geçerli girişle ilgili bilgileri içerir. Kullanıcı herhangi bir nedenle giriş yapamazsa ApiException
hatası verilir.
@Override
public void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if(resultCode == Activity.RESULT_OK) {
if (requestCode == REQUEST_CODE_GOOGLE_SIGN_IN) {
try {
SignInCredential credential = Identity.getSignInClient(this).getSignInCredentialFromIntent(data);
// Signed in successfully - show authenticated UI
updateUI(credential);
} catch (ApiException e) {
// The ApiException status code indicates the detailed failure reason.
}
}
}
}
private ActivityResultLauncher<IntentSenderRequest> loginResultHandler = registerForActivityResult(new ActivityResultContracts.StartIntentSenderForResult(), result -> {
// handle intent result here
});
Başarılı bir oturum açmanın sonucu her zaman kullanıcının tam adını, e-posta adresini ve profil resmi URL'sini döndürür. Ek bilgiye ihtiyacınız varsa kullanıcıları eksiksiz bir profil bilgileri akışına yönlendirebilirsiniz.