Để bật tính năng đăng nhập bằng một lần chạm cho người dùng cũ, bạn có thể nhắc người dùng lưu mật khẩu bằng Google. Người dùng sẽ có thể đăng nhập bằng mật khẩu đã lưu trong ứng dụng của bạn và trên web.
Khi bạn bắt đầu quy trình lưu mật khẩu, người dùng sẽ thấy một hộp thoại ở cuối màn hình cho phép họ chọn có muốn lưu mật khẩu hay không và muốn lưu vào Tài khoản Google nào.
Khởi chạy hộp thoại trang tính dưới cùng để lưu mật khẩu
Bạn nên chạy hộp thoại lưu mật khẩu sau khi đã xác thực tên người dùng và mật khẩu bằng phần phụ trợ. Lưu trữ thông tin đăng nhập trong bộ nhớ trong khi xác thực. Sau khi bạn xác nhận rằng thông tin đăng nhập hợp lệ, hãy mở hộp thoại lưu bằng cách làm như sau:
Tạo một đối tượng
SignInPassword
mới. Bạn nên khởi tạo bằng mã nhận dạng người dùng mà họ sử dụng với dịch vụ của bạn (ví dụ: tên người dùng hoặc địa chỉ email) và mật khẩu mà bạn muốn lưu.private static final int REQUEST_CODE_GIS_SAVE_PASSWORD = 2; /* unique request id */ private void savePassword() { SignInPassword signInPassword = new SignInPassword(userId, password); ...
Tạo đối tượng
SavePasswordRequest
SavePasswordRequest savePasswordRequest = SavePasswordRequest.builder().setSignInPassword(signInPassword).build();
Lấy một
PendingIntent
để hiển thị hộp thoại lưu mật khẩu từIdentity.getCredentialSavingClient
và khởi chạy quy trình: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); })
Xử lý kết quả lưu mật khẩu
Xử lý kết quả của quy trình lưu mật khẩu trong 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
});