บันทึกรหัสผ่านด้วยการบันทึกข้อมูลเข้าสู่ระบบ

หากต้องการเปิดใช้การลงชื่อเข้าใช้ด้วย One Tap สำหรับผู้ใช้ที่กลับมา คุณสามารถแจ้งให้ผู้ใช้บันทึก รหัสผ่านกับ Google ผู้ใช้จะสามารถลงชื่อเข้าใช้ รหัสผ่านในแอปและบนเว็บ

เมื่อเริ่มขั้นตอนการบันทึกรหัสผ่าน ผู้ใช้จะเห็น กล่องโต้ตอบ Bottom Sheet ซึ่งช่วยให้ผู้ใช้เลือกได้ว่าต้องการบันทึกรหัสผ่านหรือไม่ และบัญชี Google ที่ต้องการบันทึกข้อมูลนั้น

จับภาพหน้าจอของรหัสผ่าน

เปิดกล่องโต้ตอบ Bottom Sheet การบันทึกรหัสผ่าน

คุณควรเปิดกล่องโต้ตอบการบันทึกรหัสผ่านหลังจากที่คุณตรวจสอบสิทธิ์ ชื่อผู้ใช้และรหัสผ่าน ด้วยแบ็กเอนด์ของคุณ เก็บข้อมูลเข้าสู่ระบบไว้ในหน่วยความจำขณะ กำลังตรวจสอบสิทธิ์ หลังจากยืนยันแล้วว่าข้อมูลเข้าสู่ระบบถูกต้อง ให้เปิด บันทึกกล่องโต้ตอบโดยทำดังต่อไปนี้

  1. สร้างออบเจ็กต์ SignInPassword ใหม่ เริ่มต้นกับผู้ใช้ รหัสที่พวกเขาใช้กับบริการของคุณ (เช่น ชื่อผู้ใช้หรืออีเมล) และรหัสผ่านที่ต้องการบันทึก

    private static final int REQUEST_CODE_GIS_SAVE_PASSWORD = 2; /* unique request id */
    private void savePassword() {
        SignInPassword signInPassword = new SignInPassword(userId, password);
        ...
    
  2. สร้างออบเจ็กต์ SavePasswordRequest

    SavePasswordRequest savePasswordRequest =
        SavePasswordRequest.builder().setSignInPassword(signInPassword).build();
    
  3. ดาวน์โหลด PendingIntent เพื่อแสดงกล่องโต้ตอบการบันทึกรหัสผ่านจาก Identity.getCredentialSavingClient แล้วเปิดขั้นตอนดังนี้

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

จัดการผลการบันทึกรหัสผ่าน

จัดการผลของขั้นตอนการบันทึกรหัสผ่านใน 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
    });