Lưu mật khẩu bằng tính năng Lưu thông tin xác thực

Để 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 họ 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 ở dạng bảng dưới cùng cho phép họ chọn xem có muốn lưu mật khẩu hay không và họ muốn lưu mật khẩu vào Tài khoản Google nào.

Lưu ảnh chụp màn hình mật khẩu

Khởi chạy hộp thoại lưu mật khẩu dưới cùng

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ợ. Giữ lại thông tin xác thực trong bộ nhớ trong khi xác thực. Sau khi bạn xác nhận rằng thông tin xác thực là hợp lệ, hãy mở hộp thoại lưu bằng cách thực hiện các bước sau:

  1. Tạo đối tượng SignInPassword mới. Bạn phải khởi chạy mã này 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 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);
        ...
    
  2. Tạo đối tượng SavePasswordRequest

    SavePasswordRequest savePasswordRequest =
        SavePasswordRequest.builder().setSignInPassword(signInPassword).build();
    
  3. Nhận 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
    });