Setelah pengguna berhasil login, membuat akun, atau mengubah sandi, izinkan mereka untuk menyimpan kredensial mereka agar dapat mengotomatiskan autentikasi di masa mendatang di aplikasi Anda.
Sebelum memulai
Mengonfigurasi project Android Studio.
Simpan kredensial
Buat objek Credential
yang berisi informasi login pengguna. Sebagai
untuk memungkinkan pengguna menyimpan
kredensial mereka setelah berhasil login dengan
{i>password<i} mereka:
Credential credential = new Credential.Builder(email)
.setPassword(password) // Important: only store passwords in this field.
// Android autofill uses this value to complete
// sign-in forms, so repurposing this field will
// likely cause errors.
.build();
Atau, misalnya, setelah pengguna berhasil login dengan Akun Google-nya:
GoogleSignInAccount gsa = signInTask.getResult();
Credential credential = new Credential.Builder(gsa.getEmail())
.setAccountType(IdentityProviders.GOOGLE)
.setName(gsa.getDisplayName())
.setProfilePictureUri(gsa.getPhotoUrl())
.build();
Selanjutnya, panggil CredentialsClient.save()
untuk menyimpan
memiliki kredensial yang lengkap. Jika panggilan ke CredentialsClient.save()
tidak langsung dilakukan
berhasil, kredensial mungkin baru, di mana
pengguna harus mengonfirmasi
terhadap permintaan simpan. Selesaikan ResolvableApiException
dengan
startResolutionForResult()
untuk meminta konfirmasi pengguna.
Jika pengguna memilih untuk tidak menyimpan kredensial, pengguna tidak akan diminta lagi untuk
menyimpan kredensial akun
apa pun untuk aplikasi. Jika Anda memanggil
CredentialsClient.save()
setelah pengguna memilih tidak ikut, hasilnya akan memiliki
kode status CANCELED
. Nantinya, pengguna dapat memilih untuk ikut serta dari
Aplikasi Setelan, di bagian Smart Lock untuk Sandi. Pengguna harus mengaktifkan
penyimpanan kredensial untuk semua akun agar
diminta untuk menyimpan kredensial pada lain waktu.
mCredentialsClient.save(credential).addOnCompleteListener(
new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
if (task.isSuccessful()) {
Log.d(TAG, "SAVE: OK");
Toast.makeText(activity, "Credentials saved", Toast.LENGTH_SHORT).show();
return;
}
Exception e = task.getException();
if (e instanceof ResolvableApiException) {
// Try to resolve the save request. This will prompt the user if
// the credential is new.
ResolvableApiException rae = (ResolvableApiException) e;
try {
rae.startResolutionForResult(this, RC_SAVE);
} catch (IntentSender.SendIntentException exception) {
// Could not resolve the request
Log.e(TAG, "Failed to send resolution.", exception);
Toast.makeText(activity, "Save failed", Toast.LENGTH_SHORT).show();
}
} else {
// Request has no resolution
Toast.makeText(activity, "Save failed", Toast.LENGTH_SHORT).show();
}
}
});</pre>
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
// ...
if (requestCode == RC_SAVE) {
if (resultCode == RESULT_OK) {
Log.d(TAG, "SAVE: OK");
Toast.makeText(this, "Credentials saved", Toast.LENGTH_SHORT).show();
} else {
Log.e(TAG, "SAVE: Canceled by user");
}
}
// ...
}
Setelah menyimpan kredensial, ambil kredensial dengan memanggil
CredentialsClient.request()
Menargetkan Android O dan yang lebih baru
Saat Anda menyimpan kredensial sandi menggunakan Smart Lock di perangkat yang menjalankan Android O atau yang lebih baru, Smart Lock menggunakan dialog konfirmasi isi otomatis native daripada jika memungkinkan. (Perhatikan bahwa kredensial yang disimpan menggunakan Isi Otomatis dengan Google dibagikan secara dua arah dengan Smart Lock untuk Sandi.)