ตรวจสอบสิทธิ์ด้วยรหัสผ่าน

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

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

สิ่งที่ต้องมีก่อน

การติดตั้งใช้งานรหัสผ่านของ Credential Manager จะทำงานในอุปกรณ์ที่ใช้ Android 4.4 (ระดับ API 19) ขึ้นไป

ภาพรวม

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

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

เพิ่มการอ้างอิงไปยังแอป

เพิ่มทรัพยากร Dependency ต่อไปนี้ลงในไฟล์ build.gradle ของโมดูลแอป

Kotlin

dependencies {
    implementation("androidx.credentials:credentials:1.7.0-alpha02")
}

Groovy

dependencies {
    implementation "androidx.credentials:credentials:1.7.0-alpha02"
}

สร้างอินสแตนซ์ของ Credential Manager

ใช้บริบทของแอปหรือกิจกรรมเพื่อสร้างออบเจ็กต์ CredentialManager

// Use your app or activity context to instantiate a client instance of
// CredentialManager.
private val credentialManager = CredentialManager.create(context)

บันทึกรหัสผ่านของผู้ใช้

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

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

  2. จัดการการตอบกลับ: ประมวลผล CreatePasswordResponse และ จัดการข้อผิดพลาด (เช่น หากผู้ใช้ยกเลิกคำขอ)

suspend fun registerPassword(username: String, password: String) {
    // Initialize a CreatePasswordRequest object.
    val createPasswordRequest =
        CreatePasswordRequest(id = username, password = password)

    // Create credential and handle result.
    coroutineScope {
        try {
            val result =
                credentialManager.createCredential(
                    // Use an activity based context to avoid undefined
                    // system UI launching behavior.
                    activityContext,
                    createPasswordRequest
                )
            // Handle register password result
        } catch (e: CreateCredentialException) {
            handleFailure(e)
        }
    }
}

ลงชื่อเข้าใช้ด้วยรหัสผ่าน

หากต้องการดึงข้อมูลเข้าสู่ระบบที่บันทึกไว้ ให้สร้าง GetCredentialRequest ที่มี GetPasswordOption แล้วเรียกใช้ getCredential() หากต้องการกรองรหัสผ่านที่จะดึงข้อมูลตามรหัสผู้ใช้ที่ระบุ ให้ใช้ฟิลด์ที่ไม่บังคับ allowedUserIds

val getPasswordOption = GetPasswordOption()

val credentialRequest = GetCredentialRequest.Builder()
    .addCredentialOption(getPasswordOption)
    .build()

ระบุช่องที่ควรใช้การป้อนข้อความอัตโนมัติ

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

การระบุช่องบางช่องว่ามีไว้สำหรับการป้อนข้อความอัตโนมัติมีประโยชน์ดังนี้

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

ใส่แอตทริบิวต์ isCredential ในช่องชื่อผู้ใช้และรหัสผ่านตามที่แสดงใน ตัวอย่างต่อไปนี้

<EditText
    android:id="@+id/username_edittext"
    android:autofillHints="username"
    android:isCredential="true" />

<EditText
    android:id="@+id/password_edittext"
    android:inputType="textPassword"
    android:autofillHints="password"
    android:isCredential="true" />

หรือจะเพิ่มแอตทริบิวต์แบบเป็นโปรแกรมตามที่แสดงในข้อมูลโค้ดต่อไปนี้ก็ได้

if (android.os.Build.VERSION.SDK_INT >=
    android.os.Build.VERSION_CODES.UPSIDE_DOWN_CAKE) { // Android 14
    usernameEditText.isCredential = true
    passwordEditText.isCredential = true
}

หากต้องการให้ใช้งานร่วมกับเครื่องมือจัดการรหัสผ่านได้ คุณต้องกำหนดค่า Digital Asset Links ระหว่างแอปกับเว็บไซต์ ซึ่งจะช่วยให้แชร์ข้อมูลเข้าสู่ระบบได้อย่างปลอดภัยในทั้ง 2 แพลตฟอร์ม