หากต้องการผสานรวม Smart Lock สำหรับรหัสผ่านลงในแอป Android คุณต้องเพิ่มการเรียก Credentials API ไปยังขั้นตอนการเริ่มต้นใช้งานและการลงชื่อเข้าใช้ของแอป แผนภาพต่อไปนี้แสดงการทำงานของแอป Android ทั่วไปที่ใช้ Smart Lock สำหรับรหัสผ่าน
แม้ว่าการผสานรวม Smart Lock สำหรับรหัสผ่านจะมีหลายวิธี แต่ความเฉพาะเจาะจงของการผสานรวมจะขึ้นอยู่กับโครงสร้างและประสบการณ์ของผู้ใช้แอป เราขอแนะนำให้ใช้ขั้นตอนต่อไปนี้สำหรับแอปส่วนใหญ่ แอปที่ใช้ขั้นตอนนี้มีข้อได้เปรียบด้านประสบการณ์ของผู้ใช้ดังต่อไปนี้
- ระบบจะลงชื่อเข้าใช้ผู้ใช้ปัจจุบันในบริการของคุณซึ่งบันทึกข้อมูลเข้าสู่ระบบไว้ทันที และจะเข้าไปยังมุมมองที่ลงชื่อเข้าใช้โดยตรงเมื่อเปิดแอป
- ผู้ใช้ที่บันทึกข้อมูลรับรองหลายรายการหรือที่ปิดใช้การลงชื่อเข้าใช้อัตโนมัติไว้ต้องตอบเพียงกล่องโต้ตอบเดียวก่อนที่จะไปที่มุมมองการลงชื่อเข้าใช้ของแอป
- ผู้ใช้ที่ไม่มีข้อมูลรับรองที่บันทึกไว้หรือยังไม่ได้ลงชื่อสมัครใช้สามารถเลือกชื่อและอีเมลของตนด้วยการแตะเพียงครั้งเดียว และระบบจะส่งข้อมูลนี้ไปยังมุมมองการลงชื่อเข้าใช้หรือการลงชื่อสมัครใช้อย่างชาญฉลาด โดยกรอกข้อมูลนี้ไว้ล่วงหน้าแล้ว
- เมื่อผู้ใช้ออกจากระบบ แอปจะตรวจสอบให้แน่ใจว่าไม่ได้ลงชื่อเข้าใช้อีกครั้งโดยอัตโนมัติ
เรียกข้อมูลเข้าสู่ระบบ
- เมื่อแอปเริ่มทำงาน หากไม่มีผู้ใช้ลงชื่อเข้าใช้แล้ว ให้โทรหา
CredentialsClient.request()
- หาก
Task
สำเร็จ ให้รับข้อมูลเข้าสู่ระบบของผู้ใช้ด้วยgetResult().getCredential()
และใช้เพื่อลงชื่อเข้าใช้ - หาก
Task
ไม่สำเร็จและข้อยกเว้นคืออินสแตนซ์ของResolvableApiException
และgetStatusCode()
แสดงผลRESOLUTION_REQUIRED
ก็ต้องระบุอินพุตของผู้ใช้เพื่อเลือกข้อมูลเข้าสู่ระบบ เรียกstartResolutionForResult()
เพื่อแจ้งให้ผู้ใช้เลือกบัญชีที่บันทึกไว้ จากนั้นโทรหาgetParcelableExtra(Credential.EXTRA_KEY)
เพื่อรับข้อมูลเข้าสู่ระบบของผู้ใช้และใช้เพื่อลงชื่อเข้าใช้
บันทึกข้อมูลเข้าสู่ระบบ
หาก
Task
ทำงานไม่สำเร็จโดยที่มีApiException
และgetStatusCode()
แสดงผลSIGN_IN_REQUIRED
ผู้ใช้จะไม่มีข้อมูลเข้าสู่ระบบที่บันทึกไว้และต้องลงชื่อเข้าใช้หรือลงชื่อสมัครใช้ด้วยตนเองโดยใช้ขั้นตอนการลงชื่อเข้าใช้หรือลงชื่อสมัครใช้ปัจจุบัน หลังจากที่ผู้ใช้ลงชื่อเข้าใช้เรียบร้อยแล้ว คุณอาจเปิดโอกาสให้ผู้ใช้บันทึกข้อมูลเข้าสู่ระบบสำหรับการดึงข้อมูลในอนาคต (ขั้นตอนที่ 5)คุณช่วยให้ผู้ใช้ลงชื่อเข้าใช้หรือลงชื่อสมัครใช้ได้เร็วและง่ายขึ้นได้โดยดึงคำแนะนำในการลงชื่อเข้าใช้ เช่น อีเมลของผู้ใช้ ผู้ใช้จะเลือกคำแนะนำและข้ามการพิมพ์ข้อมูลเข้าสู่ระบบได้ หากแอปของคุณกำหนดให้ผู้ใช้ลงชื่อเข้าใช้ คุณอาจเลือกเรียกข้อมูลคำแนะนำได้ทันทีหลังจากที่คำขอข้อมูลเข้าสู่ระบบเริ่มต้นล้มเหลว (หรือจะรอจนกระทั่งผู้ใช้เริ่มขั้นตอนการลงชื่อเข้าใช้หรือลงชื่อสมัครใช้ก็ได้)
- เรียก
CredentialsClient.getHintPickerIntent()
แล้วเริ่ม Intent เพื่อแจ้งให้ผู้ใช้เลือกบัญชี จากนั้นโทรไปที่getParcelableExtra(Credential.EXTRA_KEY)
เพื่อรับ คำแนะนำในการลงชื่อเข้าใช้ - หากรหัสผู้ใช้ของคำแนะนำตรงกับผู้ใช้ที่มีอยู่ ให้กรอกแบบฟอร์มลงชื่อเข้าใช้ล่วงหน้าและอนุญาตให้ผู้ใช้ป้อนรหัสผ่านเพื่อลงชื่อเข้าใช้
- หากรหัสผู้ใช้ของคำแนะนำไม่ตรงกับผู้ใช้ที่มีอยู่ ให้กรอกแบบฟอร์มลงชื่อสมัครใช้ด้วย ID และชื่อผู้ใช้ แล้วให้ผู้ใช้สร้างบัญชีใหม่
- เรียก
-
หลังจากที่ผู้ใช้ลงชื่อเข้าใช้หรือสร้างบัญชีสำเร็จแล้ว ให้บันทึกรหัสผู้ใช้และรหัสผ่านด้วย
CredentialsClient.save()
หากผู้ใช้ลงชื่อเข้าใช้กับผู้ให้บริการข้อมูลประจำตัวแบบรวมศูนย์ เช่น Google Sign-In ให้สร้างออบเจ็กต์
Credential
โดยใช้อีเมลของผู้ใช้เป็นรหัสและระบุผู้ให้บริการข้อมูลประจำตัวด้วยsetAccountType
ออกจากระบบ
- เมื่อผู้ใช้ออกจากระบบ ให้โทรหา
CredentialsClient.disableAutoSignIn()
เพื่อป้องกันไม่ให้ผู้ใช้ลงชื่อกลับเข้าใช้อีกในทันที การปิดใช้การลงชื่อเข้าใช้อัตโนมัติยังช่วยให้ผู้ใช้สลับไปมาระหว่างบัญชีได้อย่างง่ายดาย เช่น ระหว่างบัญชีที่ทำงานกับบัญชีส่วนตัว หรือระหว่างบัญชีในอุปกรณ์ที่แชร์ โดยไม่ต้องป้อนข้อมูลการลงชื่อเข้าใช้อีกครั้ง
หากพร้อมผสานรวม Smart Lock สำหรับรหัสผ่านเข้ากับแอปของคุณแล้ว มาเริ่มต้นกันเลย