ตรวจสอบสิทธิ์ผู้ใช้ด้วย WebView

เอกสารนี้อธิบายวิธีผสานรวม Credential Manager API กับแอป Android ที่ใช้ WebView Credential Manager ได้รับการรองรับโดยเนทีฟในไลบรารี android.webkit.WebView ในเวอร์ชัน 1.12.0 ขึ้นไป

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

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

dependencies {
  implementation("androidx.credentials:credentials:1.6.0-beta02")   
  implementation("androidx.credentials:credentials-play-services-auth:1.6.0-beta02")
  implementation("androidx.webkit:webkit:1.14.0")
}

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

ใช้ไลบรารี WebKit

หากต้องการใช้ไลบรารี WebKit ให้ตรวจสอบการรองรับฟีเจอร์ แล้วเปิดใช้การรองรับโดย เรียกใช้ setWebAuthenticationSupport():

class WebViewActivity : ComponentActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContent {
            val url = "https://passkeys-codelab.glitch.me/"
            AndroidView(
                factory = { context ->
                    WebView(context).apply {
                        settings.javaScriptEnabled = true

                        webViewClient = WebViewClientImpl()
                    }
                },
                update = { webView ->
                    run {
                        webView.loadUrl(url)
                        if (WebViewFeature.isFeatureSupported(WebViewFeature.WEB_AUTHENTICATION)) {
                            WebSettingsCompat.setWebAuthenticationSupport(
                                webView.settings,
                                WebSettingsCompat.WEB_AUTHENTICATION_SUPPORT_FOR_APP,
                            )
                            // Check if getWebauthenticationSupport may have been disabled by the WebView.
                            Log.e(
                                "WebViewPasskeyDemo",
                                "getWebAuthenticationSupport result: " + WebSettingsCompat.getWebAuthenticationSupport(
                                    webView.settings
                                ),
                            )
                        } else {
                            Log.e("WebViewPasskeyDemo", "WebView does not support passkeys.")
                        }
                    }
                },
            )
        }
    }
}

การผสานรวมเว็บ

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

การทดสอบและการติดตั้งใช้งาน

ทดสอบโฟลว์ทั้งหมดอย่างละเอียดในสภาพแวดล้อมที่มีการควบคุมเพื่อยืนยันว่ามีการสื่อสารที่เหมาะสม ระหว่างแอป Android, หน้าเว็บ และแบ็กเอนด์

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

ตรวจสอบว่าการติดตั้งใช้งานสอดคล้องกับคําแนะนําด้าน UX