Halaman ini diterjemahkan oleh Cloud Translation API.
Switch to English

Mengintegrasikan Masuk dengan Google ke Aplikasi Android Anda

Untuk mengintegrasikan Masuk dengan Google ke dalam aplikasi Android Anda, konfigurasikan Masuk dengan Google dan tambahkan tombol ke tata letak aplikasi Anda yang memulai alur masuk.

Sebelum kamu memulai

Konfigurasikan proyek Konsol API Google dan siapkan proyek Android Studio Anda .

Konfigurasikan Login dengan Google dan objek GoogleSignInClient

  1. Dalam metode onCreate aktivitas login Anda, konfigurasikan Login dengan Google untuk meminta data pengguna yang diperlukan oleh aplikasi Anda. Misalnya, untuk mengonfigurasi Masuk dengan Google untuk meminta ID pengguna dan informasi profil dasar, buat objek GoogleSignInOptions dengan parameter DEFAULT_SIGN_IN . Untuk meminta alamat email pengguna juga, buat objek GoogleSignInOptions dengan opsi requestEmail .

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

    Jika Anda perlu meminta cakupan tambahan untuk mengakses Google API, tentukan dengan requestScopes . Untuk pengalaman pengguna terbaik, saat masuk, hanya minta cakupan yang diperlukan agar aplikasi Anda berfungsi minimal. Minta cakupan tambahan apa pun hanya saat Anda membutuhkannya, sehingga pengguna Anda melihat layar persetujuan dalam konteks tindakan yang mereka lakukan. Lihat Meminta Cakupan Tambahan .

  2. Kemudian, juga dalam metode onCreate aktivitas login Anda, buat objek GoogleSignInClient dengan opsi yang Anda tentukan.

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

Periksa pengguna yang sudah masuk

Dalam metode onStart aktivitas Anda, periksa apakah pengguna sudah masuk ke aplikasi Anda dengan Google.

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

Jika GoogleSignIn.getLastSignedInAccount mengembalikan objek GoogleSignInAccount (bukan null ), pengguna telah masuk ke aplikasi Anda dengan Google. Perbarui UI Anda sebagaimana mestinya — yaitu, sembunyikan tombol masuk, luncurkan aktivitas utama Anda, atau apa pun yang sesuai untuk aplikasi Anda.

Jika GoogleSignIn.getLastSignedInAccount mengembalikan null , pengguna belum masuk ke aplikasi Anda dengan Google. Perbarui UI Anda untuk menampilkan tombol Masuk dengan Google.

Tambahkan tombol Masuk Google ke aplikasi Anda

  1. Tombol masuk Google standar Tambahkan SignInButton di tata letak aplikasi Anda:

    <com.google.android.gms.common.SignInButton
     android:id="@+id/sign_in_button"
     android:layout_width="wrap_content"
     android:layout_height="wrap_content" />
    
  2. Opsional : Jika Anda menggunakan grafik tombol masuk default alih-alih menyediakan aset tombol masuk Anda sendiri, Anda dapat menyesuaikan ukuran tombol dengan metode setSize .

    // Set the dimensions of the sign-in button.
    SignInButton signInButton = findViewById(R.id.sign_in_button);
    signInButton.setSize(SignInButton.SIZE_STANDARD);
    
  3. Dalam aktivitas Android (misalnya, dalam metode onCreate ), daftarkan OnClickListener tombol Anda untuk OnClickListener pengguna saat diklik:

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

Mulai alur masuk

  1. Gambar pemilih akun Masuk Dalam metode onClick aktivitas, tangani ketukan tombol login dengan membuat maksud getSignInIntent metode getSignInIntent , dan mulai maksud tersebut dengan 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);
    }

    Memulai maksud meminta pengguna untuk memilih akun Google yang akan digunakan untuk masuk. Jika Anda meminta cakupan di luar profile , email , dan openid , pengguna juga diminta untuk memberikan akses ke resource yang diminta.

  2. Setelah pengguna masuk, Anda bisa mendapatkan objek GoogleSignInAccount untuk pengguna dalam metode onActivityResult aktivitas.

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

    Objek GoogleSignInAccount berisi informasi tentang pengguna yang masuk, seperti nama pengguna.

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

    Anda juga bisa mendapatkan alamat email pengguna dengan getEmail , ID Google pengguna (untuk penggunaan sisi klien) dengan getId , dan token ID untuk pengguna dengan getIdToken . Jika Anda perlu meneruskan pengguna yang saat ini login ke server backend, kirim token ID ke server backend Anda dan validasi token tersebut di server.