تاريخ النشر: 12 يناير 2026
يتضمّن الإصدار 143 من Chrome تحديثات على Federated Credential Management API (FedCM) لتحسين الخصوصية وتجربة المطوّرين وإمكانية التشغيل التفاعلي للمتصفّح. تستند هذه التغييرات إلى الملاحظات الواردة من موفّري خدمات الهوية والجهات المعتمِدة ومنتدى الويب.
تشمل التعديلات الرئيسية ما يلي:
- إتاحة استجابات JSON منظَّمة
- التحقّق بشكل أكثر صرامة من صحة البيانات الوصفية للعميل
- تحسينات على اتساق واجهة برمجة التطبيقات
إتاحة استجابات JSON منظَّمة من نقطة نهاية تأكيد الهوية
في السابق، كان نقطة نهاية تأكيد الهوية في FedCM تتطلّب أن تكون القيمة token في الردّ عبارة عن سلسلة. وقد اضطر المطوّرون إلى تحويل البيانات يدويًا إلى سلسلة JSON على الخادم وتحليلها على العميل.
بدءًا من الإصدار 143 من Chrome، يتيح نقطة نهاية تأكيد الهوية استخدام عنصر JSON منظَّم كقيمة للسمة token، على سبيل المثال:
{
"token": {
"access_token": "a1b2c3d4e5f6...",
"user_info": {
"email": "jane.doe@company.example",
"given_name": "Jane",
"family_name": "Doe"
}
}
}
يزيل هذا التغيير الحاجة إلى تسلسل JSON وتحليله يدويًا، ويسمح لموفّري خدمات تحديد الهوية بعرض معلومات إضافية.
يمكنك تجربة هذه الميزة من خلال العرض التوضيحي لواجهة FedCM أو الرجوع إلى دليل تنفيذ FedCM من جهة موفّر الهوية للحصول على معلومات حديثة حول كيفية تنظيم الردّ المعدَّل لنقطة نهاية تأكيد الهوية.
إثبات صحة البيانات الوصفية للعميل
لتحسين حماية خصوصية المستخدمين، تعمل واجهة برمجة التطبيقات FedCM على تعزيز عملية التحقّق من صحة نقاط نهاية موفّر الهوية. يؤدي هذا التغيير إلى منع موفّر الهوية من مطابقة جهة الاعتماد مع معرّف فريد تم تمريره كمَعلمة مسار.
إذا كان إعداد FedCM يستخدم نقطة النهاية client_metadata، يجب تضمين accounts_endpoint وlogin_url في ملف .well-known/web-identity. بدءًا من الإصدار 145 من Chrome، يفرض المتصفّح المَعلمة accounts_endpoint في الملف المعروف.
{
"accounts_endpoint": "/example-accounts",
"login_url": "/example-login"
}
لمزيد من التفاصيل، اطّلِع على دليل تنفيذ FedCM.
تعديلات على اتساق واجهة برمجة التطبيقات ومعالجة الأخطاء
يتضمّن الإصدار 143 من Chrome تغييران لتحسين وضوح واجهة FedCM API واتساقها على جميع المتصفّحات، بما يتوافق مع الملاحظات الواردة من منظومة الويب المتكاملة.
نقل المَعلمة nonce
اعتبارًا من الإصدار 145، سيوقف Chrome إتاحة المَعلمة nonce ذات المستوى الأعلى. يجب تمرير المَعلمة nonce ضمن عنصر المَعلمات
في طلب navigator.credentials.get():
const credential = await navigator.credentials.get({
identity: {
providers: [{
// Don't pass nonce as a top-level parameter here
configURL: "/fedcm.json",
clientId: "123",
params: {
// Place nonce within the params object
nonce: "a-random-nonce"
}
}]
}
});
تأكَّد من أنّ منطق جهة الخادم يتوقّع nonce ضمن العنصر params في نقطة نهاية تأكيد المعرّف.
إعادة تسمية IdentityCredentialError.code إلى IdentityCredentialError.error
لمنع حدوث تعارض في التسمية مع السمة المضمّنة DOMException.code،
تمت إعادة تسمية IdentityCredentialError.code إلى IdentityCredentialError.error.
سيتم فرض تطبيق هذا التغيير بدءًا من الإصدار 145 من Chrome.
try {
// FedCM API call
} catch (e) {
// Renamed IdentityCredentialError.code to IdentityCredentialError.error:
console.log(e.error);
}
لضمان التوافق مع الإصدارات القديمة خلال فترة الانتقال (الإصداران 143 و144 من Chrome)، تحقَّق من السمتَين code وerror في منطق معالجة الأخطاء.
يضمن ذلك عمل الحلّ في المتصفّحات القديمة أثناء تحديث المستخدمين إلى إصدارات أحدث من Chrome:
// In older browsers, the property might still be named 'code'
// during the transition period
const errorCode = e.error ?? e.code;
if (errorCode) {
// Handle specific error types
} else {
console.error("An unknown error occurred", e);
}
يمكنك الاطّلاع على مزيد من المعلومات في قسم عرض ردّ يتضمّن خطأ ضمن مستندات FedCM.
مشاركة ملاحظاتك
نحن نقدّر ملاحظاتك بينما نواصل تطوير FedCM وتحسينها. إذا كانت لديك ملاحظات أو واجهت أي مشاكل:
- يُرجى الإبلاغ عن مشكلة في مستودع GitHub.
- انضم إلى قائمة البريد الإلكتروني الخاصة بالنشرة الإخبارية للمطوّرين للبقاء على اطّلاع على آخر الإشعارات.