本文档介绍了如何将 Credential Manager API 与使用 WebView 的 Android 应用相集成。Credential Manager 在 1.12.0 版及更高版本的 android.webkit.WebView 库中受到原生支持。
前提条件
如需在 WebView 中使用 Credential Manager,请将以下依赖项添加到应用模块的 build 脚本中:
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.")
}
}
},
)
}
}
}
Web 集成
如需了解如何构建 Web 集成,请参阅为无密码登录创建通行密钥。您还可以参考演示网站来源。
测试和部署
在受控环境中全面测试整个流程,以验证 Android 应用、网页和后端之间能否正常通信。
将集成解决方案部署到生产环境中,验证后端是否可以处理传入的注册和身份验证请求。后端代码应生成初始 JSON 以用于注册 (create) 和身份验证 (get) 流程。它还应处理对从网页收到的响应的确认和验证。
确认实现与用户体验建议相符。