Google Sign-In'i Android Uygulamanıza Entegre Etme

Google Sign-In'i Android uygulamanıza entegre etmek için Google Sign-In'i yapılandırın ve uygulamanızın düzenine oturum açma akışını başlatan bir düğme ekleyin.

Sen başlamadan önce

Bir Google API Konsolu projesini yapılandırın ve Android Studio projenizi kurun .

Google Sign-in'i ve GoogleSignInClient nesnesini yapılandırın

  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, Google ile Oturum Açma'yı kullanıcıların kimliği ve temel profil bilgilerini isteyecek şekilde yapılandırmak için DEFAULT_SIGN_IN parametresiyle bir GoogleSignInOptions nesnesi oluşturun. Kullanıcıların e-posta adreslerini de istemek için requestEmail seçeneğiyle GoogleSignInOptions nesnesini 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 requestScopes . En iyi kullanıcı deneyimi için oturum açarken yalnızca uygulamanızın minimum düzeyde çalışması için gereken kapsamları isteyin. Ek kapsamları yalnızca ihtiyaç duyduğunuzda isteyin, böylece kullanıcılarınız gerçekleştirilen bir eylem bağlamında izin ekranını görebilir. Ek Kapsam Talep Etme bölümüne bakın.

  2. Ardından, oturum açma etkinliğinizin onCreate yönteminde de belirttiğiniz seçeneklerle bir GoogleSignInClient nesnesi oluşturun.

    // Build a GoogleSignInClient with the options specified by gso.
    mGoogleSignInClient = GoogleSignIn.getClient(this, gso);

Mevcut oturum açmış bir kullanıcı olup olmadığını kontrol edin

Etkinliğinizin onStart yönteminde, bir kullanıcının Google ile uygulamanızda zaten oturum onStart 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 bir GoogleSignInAccount nesnesi döndürürse ( null yerine), kullanıcı Google ile uygulamanızda zaten oturum açmış demektir. 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ı.

GoogleSignIn.getLastSignedInAccount null değerini döndürürse, kullanıcı henüz Google ile uygulamanızda oturum GoogleSignIn.getLastSignedInAccount . Google Oturum Açma düğmesini görüntülemek için kullanıcı arayüzünüzü güncelleyin.

Google Oturum Açma düğmesini uygulamanıza ekleyin

  1. Standart Google oturum açma düğmesi SignInButton uygulamanızın düzenine 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 varlıklarınızı sağlamak yerine varsayılan oturum açma düğmesi grafiğini kullanıyorsanız, düğmenin 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ıda oturum OnClickListener için OnClickListener kaydedin:

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

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

  1. Oturum Açma hesabı seçicisinin resmi Etkinliğin onClick yönteminde, getSignInIntent yöntemiyle bir oturum açma amacı oluşturarak ve amacı getSignInIntent ile getSignInIntent oturum açma düğmesi dokunuşlarını startActivityForResult .

    @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);
    }

    Amacı başlatmak, kullanıcıdan oturum açmak için bir Google hesabı seçmesini ister. profile , email ve openid dışında kapsamlar talep ettiyseniz, kullanıcıdan ayrıca istenen kaynaklara erişim izni 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 GoogleSignInAccount kullanıcı hakkında, 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 getEmail ile kullanıcının e-posta adresini, getEmail ile kullanıcının Google kimliğini (istemci tarafında kullanım için) ve getId ile kullanıcı için bir kimlik belirteci getIdToken . Şu anda oturum açmış olan kullanıcıyı bir arka uç sunucusuna geçirmeniz gerekiyorsa, kimlik belirtecini arka uç sunucunuza gönderin ve belirteci sunucuda doğrulayın.