Để 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 của mình với Google. Người dùng sẽ có thể đăng nhập bằng ảnh đã lưu trong ứng dụng của bạn và trên web.
Khi bắt đầu quy trình lưu mật khẩu, người dùng sẽ thấy hộp thoại của bảng dưới cùng cho phép họ chọn xem có muốn lưu mật khẩu của mình không và họ muốn lưu dữ liệu vào Tài khoản Google nào.
Mở hộp thoại lưu mật khẩu của bảng dưới cùng
Bạn nên mở hộp thoại lưu mật khẩu sau khi bạn đã xác thực tên người dùng và mật khẩu với phần phụ trợ của bạn. Lưu thông tin đăng nhập trong bộ nhớ khi xác thực. Sau khi bạn xác nhận thông tin đăng nhập là hợp lệ, hãy chạy lưu hộp thoại bằng cách thực hiện như sau:
Tạo một đối tượng
SignInPassword
mới. Thao tác này phải được khởi chạy với người dùng id họ sử dụng cùng với dịch vụ của bạn (ví dụ: tên người dùng hoặc địa chỉ email của họ) 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 hộp thoại lưu mật khẩuIdentity.getCredentialSavingClient
và khởi chạy flow: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 luồng 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
});