กู้คืนข้อมูลเข้าสู่ระบบของแอปเมื่อตั้งค่าอุปกรณ์ใหม่

ฟีเจอร์กู้คืนข้อมูลเข้าสู่ระบบของเครื่องมือจัดการข้อมูลเข้าสู่ระบบช่วยให้ผู้ใช้กู้คืนบัญชีแอปได้เมื่อตั้งค่าอุปกรณ์ใหม่ API นี้อยู่ในเวอร์ชันตัวอย่างสำหรับนักพัฒนาแอปและพร้อมใช้งานในอุปกรณ์ทั้งหมดที่ใช้ Android 9 ขึ้นไปและมีบริการ Google Play (GMS) Core เวอร์ชัน 242200000 ขึ้นไป ประโยชน์ของฟีเจอร์กู้คืนข้อมูลเข้าสู่ระบบ มีดังนี้

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

วิธีการทำงาน

คุณสามารถใช้ "กู้คืนข้อมูลเข้าสู่ระบบ" เพื่อสร้าง รับ และล้างข้อมูลเข้าสู่ระบบที่เกี่ยวข้องได้

  1. สร้างข้อมูลเข้าสู่ระบบสำหรับการกู้คืน: เมื่อผู้ใช้ลงชื่อเข้าใช้แอปของคุณ ให้สร้างข้อมูลเข้าสู่ระบบสำหรับการกู้คืนที่เชื่อมโยงกับบัญชีของผู้ใช้ ระบบจะจัดเก็บข้อมูลเข้าสู่ระบบนี้ไว้ในเครื่องและซิงค์กับระบบคลาวด์หากผู้ใช้เปิดใช้การสำรองข้อมูลของ Google และการเข้ารหัสจากต้นทางถึงปลายทางพร้อมใช้งาน (แอปสามารถเลือกไม่ซิงค์กับระบบคลาวด์ได้)
  2. รับข้อมูลเข้าสู่ระบบการกู้คืน: เมื่อผู้ใช้ตั้งค่าอุปกรณ์ใหม่ แอปของคุณ สามารถขอข้อมูลเข้าสู่ระบบการกู้คืนจากตัวจัดการข้อมูลเข้าสู่ระบบได้ ซึ่งช่วยให้คุณ ลงชื่อเข้าใช้ผู้ใช้โดยอัตโนมัติได้โดยไม่ต้องป้อนข้อมูลเพิ่มเติม
  3. ล้างข้อมูลเข้าสู่ระบบสำหรับการกู้คืน: เมื่อผู้ใช้ออกจากระบบแอป คุณควรลบข้อมูลเข้าสู่ระบบสำหรับการกู้คืนที่เชื่อมโยง

ฟีเจอร์กู้คืนข้อมูลเข้าสู่ระบบจะผสานรวมกับระบบแบ็กเอนด์ที่ ใช้พาสคีย์อยู่แล้วได้อย่างราบรื่น ความเข้ากันได้นี้เกิดจากข้อเท็จจริงที่ว่า ทั้งพาสคีย์และคีย์การกู้คืน (ประเภทข้อมูลเข้าสู่ระบบที่ฟีเจอร์กู้คืนข้อมูลเข้าสู่ระบบ ใช้) เป็นไปตามข้อกำหนดทางเทคนิคพื้นฐานเดียวกัน การปรับแนวนี้ ช่วยให้มั่นใจได้ว่ากระบวนการกู้คืนข้อมูลเข้าสู่ระบบจะดึงและ คืนค่าข้อมูลเข้าสู่ระบบของผู้ใช้ที่จัดเก็บไว้ในระบบที่เปิดใช้พาสคีย์ได้อย่างมีประสิทธิภาพ ซึ่งจะมอบ ประสบการณ์การใช้งานที่สอดคล้องกันและเป็นมิตรกับผู้ใช้ในแพลตฟอร์มและ วิธีการตรวจสอบสิทธิ์ต่างๆ

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

การใช้งาน

Restore Credentials API พร้อมให้บริการผ่านไลบรารี Credential Manager Jetpack หากต้องการเริ่มต้นใช้งาน ให้ทำตามขั้นตอนต่อไปนี้

  1. เพิ่มทรัพยากร Dependency ของเครื่องมือจัดการข้อมูลเข้าสู่ระบบลงในโปรเจ็กต์

    // build.gradle.kts
    implementation("androidx.credentials:credentials:1.5.0-alpha03")
    
  2. สร้างออบเจ็กต์ CreateRestoreCredentialRequest

  3. เรียกใช้เมธอด createCredential() ในออบเจ็กต์ CredentialManager

    val credentialManager = CredentialManager.create(context)
    
    // On a successful authentication create a Restore Key
    // Pass in the context and CreateRestoreCredentialRequest object
    val response = credentialManager.createCredential(context, createRestoreRequest)
    

    ข้อมูลเข้าสู่ระบบการกู้คืนที่สร้างขึ้นนี้เป็นข้อมูลเข้าสู่ระบบประเภท WebAuthn และเป็นที่รู้จักกันในชื่อคีย์การกู้คืน

  4. เมื่อผู้ใช้ตั้งค่าอุปกรณ์ใหม่ ให้เรียกใช้เมธอด getCredential() ในออบเจ็กต์ CredentialManager

    // Fetch the Authentication JSON from server
    val authenticationJson = fetchAuthenticationJson()
    
    // Create the GetRestoreCredentialRequest object
    val options = GetRestoreCredentialOption(authenticationJson)
    val getRequest = GetCredentialRequest(listOf(options))
    
    // The restore key can be fetched in two scenarios to
    // 1. On the first launch of app on the device, fetch the Restore Key
    // 2. In the onRestore callback (if the app implements the Backup Agent)
    val response = credentialManager.getCredential(context, getRequest)
    
  5. เมื่อผู้ใช้ออกจากระบบแอป ให้เรียกใช้เมธอด clearCredentialState() ในออบเจ็กต์ CredentialManager

    // Create a ClearCredentialStateRequest object
    val clearRequest = ClearCredentialStateRequest(TYPE_CLEAR_RESTORE_CREDENTIAL)
    
    // On user log-out, clear the restore key
    val response = credentialManager.clearCredentialState(clearRequest)
    

หากใช้ตัวแทนสำรอง ให้ทำส่วนgetCredentialภายใน การเรียกกลับ onRestore ซึ่งจะช่วยให้มั่นใจได้ว่าระบบจะคืนค่าข้อมูลเข้าสู่ระบบของแอป ทันทีหลังจากคืนค่าข้อมูลแอป

คำถามที่พบบ่อย

คำถามข้อที่ 1 คีย์การกู้คืนและพาสคีย์แตกต่างกันอย่างไร

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

คำถามที่ 2 คีย์การกู้คืนเป็นข้อมูลเข้าสู่ระบบที่ใช้ได้ครั้งเดียวใช่ไหม

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

ระบบจะนำคีย์กู้คืนออกในกรณีต่อไปนี้เท่านั้น

  • การดำเนินการระดับระบบ: ผู้ใช้ถอนการติดตั้งแอปหรือล้างข้อมูลของแอป
  • การเรียกใช้ระดับแอป: คุณจะลบคีย์โดยอัตโนมัติได้ด้วยการเรียกใช้ CredentialManager#clearCredentialState() เมื่อจัดการการออกจากระบบของผู้ใช้ ในโค้ดของแอป

คำถามข้อที่ 3 ฟีเจอร์กู้คืนข้อมูลเข้าสู่ระบบใช้ได้กับอุปกรณ์ใหม่เท่านั้นใช่ไหม

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

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

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

คำถามที่ 5 องค์กรของฉันมีแอปหลัก 1 แอปและแอปย่อยหลายแอป คีย์การกู้คืน ใช้ได้กับแอปทั้งหมดนี้ไหม

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

คำถามข้อที่ 6 ต้องใช้พาสคีย์ในการสร้างคีย์การกู้คืนสำหรับบัญชีของผู้ใช้ไหม

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

คำถามข้อที่ 7 ผู้ใช้ลบคีย์การกู้คืนได้ไหม

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

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

คำถามที่ 8 ฉันใช้ "กู้คืนข้อมูลเข้าสู่ระบบ" โดยไม่ต้องตั้งค่า allowBackup เป็น true ในไฟล์ manifest ได้ไหม

ได้ ฟีเจอร์กู้คืนข้อมูลเข้าสู่ระบบจะทำงานไม่ว่าคุณจะตั้งค่า allowBackup เป็น true หรือไม่ก็ตาม

คำถามข้อที่ 9 การกู้คืนข้อมูลเข้าสู่ระบบจะทำงานอย่างไรสำหรับผู้ใช้ที่มีบัญชีที่เข้าสู่ระบบหลายบัญชีในแอปเดียวกัน

ฟีเจอร์กู้คืนข้อมูลเข้าสู่ระบบออกแบบมาให้ใช้ได้กับบัญชีเดียวเท่านั้นในแต่ละครั้ง