Menyimpan sandi dengan Menyimpan Kredensial

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 Anda dan di web.

Saat Anda memulai alur penyimpanan sandi, pengguna akan melihat dialog sheet bawah yang memungkinkan mereka memilih apakah mereka ingin menyimpan sandi dan ke Akun Google mana mereka ingin menyimpannya.

Screenshot simpan sandi

Meluncurkan dialog bottom sheet penyimpanan sandi

Anda harus meluncurkan dialog penyimpanan sandi setelah Anda mengautentikasi nama pengguna dan sandi dengan backend Anda. Simpan kredensial di memori saat melakukan autentikasi. Setelah Anda mengonfirmasi bahwa kredensial valid, luncurkan dialog penyimpanan dengan melakukan hal berikut:

  1. Buat objek SignInPassword baru. Objek ini harus diinisialisasi dengan ID pengguna yang mereka gunakan dengan layanan Anda (misalnya, nama pengguna atau alamat email) 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);
        ...
    
  2. Buat objek SavePasswordRequest.

    SavePasswordRequest savePasswordRequest =
        SavePasswordRequest.builder().setSignInPassword(signInPassword).build();
    
  3. Dapatkan PendingIntent untuk menampilkan dialog penyimpanan sandi dari Identity.getCredentialSavingClient dan luncurkan alurnya:

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