Biz edilir web için Google Sign-In JavaScript Platformu Kütüphane durdurulan . Kimlik doğrulama ve kullanıcı oturum açma için, her ikisi için yeni Google Kimlik Hizmetleri SDK'larını kullanmak Web ve Android yerine.

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 Konsol projesi yapılandırın ve Android Studio projesini kurmak .

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

  1. , Oturum açma etkinliğin içinde onCreate yöntemle, yapılandırmak Google Sign-In sizin Uygulama için gereken kullanıcı verilerini istemek için. Örneğin, bir oluşturmak, istek kullanıcıların kimliği ve temel profil bilgilerine Google oturum açma yapılandırma GoogleSignInOptions ile itiraz DEFAULT_SIGN_IN parametresi. İstek kullanıcıların e-posta adresleri için sıra oluşturmak GoogleSignInOptions ile nesne requestEmail 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();

    Eğer erişimi Google API'leri için ek kapsamları istemek gerekiyorsa, bunları belirtmek 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. Bkz Ek Kapsamlarını isteniyor .

  2. Ardından, aynı zamanda içinde etkinliğin oturum açma onCreate yöntemle, bir oluşturmak GoogleSignInClient belirttiğiniz seçeneklerle nesne.

    // 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

Senin etkinliğin içinde onStart bir kullanıcı zaten Google ile uygulamasında oturum ise yöntemiyle, kontrol edildi.

// 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);

Eğer GoogleSignIn.getLastSignedInAccount bir döner GoogleSignInAccount nesnesi (ziyade null ), kullanıcı zaten Google ile uygulamasında oturum etmiştir. 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ı.

Eğer GoogleSignIn.getLastSignedInAccount döner null kullanıcı henüz Google ile Uygulamada imzalamamıştır. 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 Ekle SignInButton uygulamanızın düzeninde:

    <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ı: düğme grafikte oturum varsayılan kullanarak yerine kendi oturum açma düğmesi varlıklar sağlıyorsanız, sizinle düğmenin boyutunu özelleştirebilirsiniz setSize yöntemiyle.

    // Set the dimensions of the sign-in button.
    SignInButton signInButton = findViewById(R.id.sign_in_button);
    signInButton.setSize(SignInButton.SIZE_STANDARD);
    
  3. Android etkinlikte (örneğin, onCreate yöntemle), düğme en kaydedin OnClickListener tıklandığında kullanıcı oturum açmak için:

    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 de onClick yöntemi, sap oturum açma düğmesi musluklar ile bir oturum açma niyeti oluşturarak getSignInIntent yöntemi ile niyet başlangıç 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. Eğer ötesinde kapsamları İstenirse profile , email ve openid , kullanıcı aynı zamanda istenen kaynaklara erişim izni istenir.

  2. Oturum açtıktan sonra, bir elde edebilirsiniz GoogleSignInAccount etkinliğin kullanıcı için nesneyi onActivityResult yöntemle.

    @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 nesne hakkında bilgi içerir Oturum açmış bir kullanıcı, bu tür bir kullanıcının adı olarak.

    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 adresi alabilirsiniz getEmail ile (istemci tarafında kullanım için) kullanıcının Google kimliği getId ve birlikte kullanıcı için belirteci kimlik getIdToken . Eğer bir arka uç sunucusuna kullanıcı imzalanan-şu anda geçmek gerekirse, arka uç sunucusuna belirteci kimlik gönderin ve sunucuda belirteç doğrulamak.