Yeni Google ile Oturum Açma API'sı

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:

Google ile Oturum Açma

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.