We are discontinuing the Google Sign-In JavaScript Platform Library for web. The library will be unavailable for download after the March 31, 2023 deprecation date. Instead, use the new Google Identity Services for Web.
By default, newly created Client IDs are now blocked from using the older Platform Library, existing Client IDs are unaffected. New Client IDs created before July 29th, 2022 can set `plugin_name` to enable use of the Google Platform Library.

Google ile Oturum Açma özelliğini Android Uygulamanıza entegre etme

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

  1. 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 üzere DEFAULT_SIGN_IN parametresiyle bir GoogleSignInOptions nesnesi oluşturun. Kullanıcılar ve e-posta adresleri için de istekte bulunmak üzere requestEmail seçeneğiyle GoogleSignInOptions 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.

  2. Ardından, oturum açma etkinliğinizin onCreate yönteminde belirttiğiniz seçeneklerle bir GoogleSignInClient 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

  1. Standart Google oturum açma düğmesi 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" />
    
  2. İ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);
    
  3. Android etkinliğinde (örneğin, onCreate yönteminde), tıklandığında kullanıcının oturum açması için OnClickListener anahtarınızı kaydedin:

    findViewById(R.id.sign_in_button).setOnClickListener(this);
    

Oturum açma akışını başlatma

  1. Oturum açma hesabı seçicinin resmi Etkinliğin onClick yönteminde getSignInIntent ile oturum açma amacı oluşturup startActivityForResult 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 ve openid dışındaki kapsamlar istediyseniz kullanıcıdan istenen kaynaklara erişim izni de vermesi istenir.

  2. Kullanıcı oturum açtıktan sonra, etkinliğin onActivityResult yönteminde kullanıcı için bir GoogleSignInAccount 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çin getIdToken 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.