Google Identity Services (GIS) adalah kumpulan API baru yang memberi pengguna proses login dan pendaftaran yang aman, dalam paket yang mudah diterapkan bagi developer. Dokumen ini menjelaskan API login Google baru (bagian dari GIS) yang dapat digunakan untuk memulai alur login atau pendaftaran saat pengguna mengetuk tombol "Login dengan Google" tombol. API ini dapat digunakan sebagai pengganti API Login dengan Google yang ada untuk alur login.
Anda sebaiknya menggunakan API ini hanya ketika pengguna secara eksplisit menampilkan intent untuk login dengan Google. Misalnya, gunakan API ini saat mereka mengklik "Login dengan Google" di aplikasi Anda.
Anda tidak boleh menggunakan API ini untuk meminta pengguna login saat peluncuran aplikasi respons terhadap pemicu lain seperti menambahkan item ke keranjang belanja. Sebagai kasus penggunaan ini, gunakan Login dan daftar Sekali Ketuk.
Saat Anda memulai alur Login dengan Google dengan API baru, hal ini akan ditampilkan UI:
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 panggilan objek SignInClient
getSignInIntent
. Panggilan ini asinkron dan setelah berhasil, panggilan ini akan memberikan
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
Di onActivityResult
, ambil SignInCredential
. SignInCredential
objek yang ditampilkan dari getSignInCredentialFromIntent
berisi informasi
info login yang valid. Jika pengguna gagal {i>login<i}
karena beberapa alasan,
ApiException
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 pengguna, email, dan URL foto profil Anda. Jika memerlukan informasi tambahan, Anda dapat mengarahkan pengguna menjadi aliran informasi profil yang lengkap.