Untuk mengaktifkan login Sekali Ketuk bagi pengguna yang kembali, Anda dapat meminta pengguna untuk menyimpan sandi mereka dengan Google. Pengguna akan dapat login dengan sandi yang disimpan di aplikasi dan di web.
Saat Anda memulai alur simpan sandi, pengguna akan melihat dialog panel bawah yang memungkinkan mereka memilih apakah ingin menyimpan sandi dan ke Akun Google mana mereka ingin menyimpannya.
Meluncurkan dialog panel bawah simpan sandi
Anda harus meluncurkan dialog simpan sandi setelah mengautentikasi nama pengguna dan sandi dengan backend Anda. Simpan kredensial dalam memori saat melakukan autentikasi. Setelah Anda mengonfirmasi bahwa kredensial valid, luncurkan dialog simpan dengan melakukan hal berikut:
Buat objek
SignInPassword
baru. ID ini harus diinisialisasi dengan ID pengguna yang mereka gunakan dengan layanan Anda (misalnya, nama pengguna atau alamat email mereka) dan sandi yang ingin Anda simpan.private static final int REQUEST_CODE_GIS_SAVE_PASSWORD = 2; /* unique request id */ private void savePassword() { SignInPassword signInPassword = new SignInPassword(userId, password); ...
Membuat objek
SavePasswordRequest
SavePasswordRequest savePasswordRequest = SavePasswordRequest.builder().setSignInPassword(signInPassword).build();
Dapatkan
PendingIntent
untuk menampilkan dialog simpan sandi dariIdentity.getCredentialSavingClient
dan luncurkan alur:Identity.getCredentialSavingClient(activity) .savePassword(savePasswordRequest) .addOnSuccessListener( result -> { startIntentSenderForResult( result.getPendingIntent().getIntentSender(), REQUEST_CODE_GIS_SAVE_PASSWORD, /* fillInIntent= */ null, /* flagsMask= */ 0, /* flagsValue= */ 0, /* extraFlags= */ 0, /* options= */ null); })
Menangani hasil penyimpanan sandi
Tangani hasil alur penyimpanan sandi di onActivityResult:
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == REQUEST_CODE_GIS_SAVE_PASSWORD) {
if (resultCode == Activity.RESULT_OK) {
/* password was saved */
} else if (resultCode == Activity.RESULT_CANCELED) {
/* password saving was cancelled */
}
}
}
private ActivityResultLauncher<IntentSenderRequest> savePasswordHandler =
registerForActivityResult(new ActivityResultContracts.StartIntentSenderForResult(), result -> {
// handle intent result here
});