به‌روزرسانی‌های FedCM در کروم ۱۴۳

منتشر شده: ۱۲ ژانویه ۲۰۲۶

کروم ۱۴۳ به‌روزرسانی‌هایی را برای API مدیریت اعتبارنامه فدرال (FedCM) ارائه می‌دهد تا حریم خصوصی، تجربه توسعه‌دهندگان و قابلیت همکاری مرورگر را بهبود بخشد. این تغییرات بر اساس بازخورد ارائه‌دهندگان هویت (IdPها)، طرفین متکی (RPها) و جامعه وب اعمال شده است.

به‌روزرسانی‌های کلیدی عبارتند از:

پشتیبانی از پاسخ‌های ساختاریافته JSON از نقطه پایانی ادعای شناسه

پیش از این، نقطه پایانیِ ادعای شناسه FedCM در پاسخ خود، الزام می‌کرد که ویژگی token یک رشته باشد. این امر توسعه‌دهندگان را مجبور می‌کرد تا داده‌ها را به صورت دستی در سرور به یک رشته JSON سریالی کرده و آن را در کلاینت تجزیه کنند.

با شروع از کروم ۱۴۳، نقطه پایانیِ ادعای شناسه از یک شیء JSON ساختاریافته به عنوان مقدار برای ویژگی token پشتیبانی می‌کند، برای مثال:

{
  "token": {
    "access_token": "a1b2c3d4e5f6...",
    "user_info": {
      "email": "jane.doe@company.example",
      "given_name": "Jane",
      "family_name": "Doe"
    }
  }
}

این تغییر نیاز به سریال‌سازی و تجزیه دستی JSON را از بین می‌برد و به IdPها اجازه می‌دهد اطلاعات اضافی را برگردانند.

این ویژگی را با نسخه آزمایشی FedCM امتحان کنید یا برای اطلاعات به‌روز در مورد نحوه ساختار پاسخ به‌روزرسانی‌شده به درخواست احراز هویت در نقطه پایانی، به راهنمای جانبی Implement FedCM on the Identity Provider مراجعه کنید.

اعتبارسنجی متادیتای کلاینت

برای محافظت بهتر از حریم خصوصی کاربران، FedCM اعتبارسنجی نقاط پایانی IdP را تقویت می‌کند. این تغییر مانع از آن می‌شود که IdP یک RP را با یک شناسه منحصر به فرد که به عنوان پارامتر مسیر ارسال می‌شود، تطبیق دهد.

اگر پیکربندی FedCM شما از نقطه پایانی client_metadata استفاده می‌کند، باید accounts_endpoint و login_url در فایل .well-known/web-identity خود وارد کنید. از کروم ۱۴۵ به بعد، مرورگر پارامتر accounts_endpoint را در فایل well-known اعمال می‌کند.

{
  "accounts_endpoint": "/example-accounts",
  "login_url": "/example-login"
}

برای جزئیات بیشتر، به راهنمای پیاده‌سازی FedCM مراجعه کنید.

به‌روزرسانی‌های سازگاری و مدیریت خطا در API

کروم ۱۴۳ دو تغییر را برای بهبود وضوح و سازگاری API FedCM در مرورگرها، مطابق با بازخورد اکوسیستم وب ، معرفی می‌کند.

پارامتر nonce را جابجا کنید

از نسخه ۱۴۵ به بعد، کروم پشتیبانی از پارامتر nonce سطح بالا را متوقف می‌کند. شما باید پارامتر nonce را در شیء params در فراخوانی 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 تغییر نام داده است. این تغییر از نسخه ۱۴۵ کروم اعمال خواهد شد.

try {
  // FedCM API call
} catch (e) {
   // Renamed IdentityCredentialError.code to IdentityCredentialError.error:    
   console.log(e.error);
}

برای اطمینان از سازگاری با نسخه‌های قبلی در طول دوره انتقال (کروم ۱۴۳ و ۱۴۴)، ویژگی‌های code و error را در منطق مدیریت خطا بررسی کنید. این کار تضمین می‌کند که راه‌حل شما در مرورگرهای قدیمی‌تر نیز کار می‌کند، در حالی که کاربران به نسخه‌های جدیدتر کروم به‌روزرسانی می‌کنند:

 // 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 ارزش قائلیم. اگر بازخوردی دارید یا با مشکلی مواجه شده‌اید:

بیشتر بدانید