يوضّح هذا المستند كيفية دمج واجهة برمجة التطبيقات Credential Manager مع تطبيق Android يستخدم WebView. تتوفّر واجهة برمجة التطبيقات Credential Manager بشكل أصلي في مكتبة
android.webkit.WebView في الإصدار 1.12.0 والإصدارات الأحدث.
المتطلّبات الأساسية
لاستخدام Credential Manager في WebView، أضِف التبعيات التالية إلى نص برمجة الإصدار الخاص بوحدة تطبيقك:
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 أوليًا لعمليتَي التسجيل (إنشاء) والمصادقة (الحصول). يجب أن يتعامل أيضًا مع التحقّق من صحة الردود الواردة من صفحة الويب.
تأكَّد من أنّ عملية التنفيذ تتوافق مع اقتراحات تجربة المستخدم.