Google Sign-In API Baru

Google Identity Services (GIS) adalah kumpulan API baru yang menyediakan proses login dan pendaftaran yang mudah dan aman bagi pengguna, dalam paket yang mudah diimplementasikan untuk developer. Dokumen ini menjelaskan API login dengan Google baru (bagian dari GIS) yang dapat digunakan untuk memulai alur login atau pendaftaran saat pengguna mengetuk tombol "Login dengan Google". API ini dapat digunakan sebagai pengganti API Login dengan Google yang ada untuk alur login.

Sebaiknya gunakan API ini hanya jika pengguna secara eksplisit menunjukkan niat untuk login dengan Google. Misalnya, gunakan API ini saat pengguna mengklik tombol "Login dengan Google" di aplikasi Anda.

Anda tidak boleh menggunakan API ini untuk meminta pengguna login saat peluncuran aplikasi atau sebagai respons terhadap pemicu lain seperti menambahkan item ke keranjang belanja. Untuk kasus penggunaan ini, gunakan login dan daftar Sekali Ketuk.

Saat Anda memulai alur Login dengan Google dengan API baru, alur tersebut akan menampilkan UI ini:

Login dengan Google

Sebelum memulai

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

Membuat permintaan login

Untuk meluncurkan alur Login dengan Google menggunakan Identity API, buat objek GetSignInRequest. Kemudian, pada objek SignInClient, panggil getSignInIntent. Panggilan ini asinkron dan jika berhasil, akan menyediakan PendingIntent untuk meluncurkan dialog.

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

Menangani hasil login

Dalam onActivityResult, ambil SignInCredential. Objek SignInCredential yang ditampilkan dari getSignInCredentialFromIntent berisi informasi tentang login yang valid. Jika pengguna gagal login karena alasan tertentu, ApiException akan ditampilkan.

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

Hasil login yang berhasil akan selalu menampilkan nama lengkap, email, dan URL foto profil pengguna. Jika memerlukan informasi tambahan, Anda dapat mengarahkan pengguna ke alur informasi profil yang lengkap.