على الأطراف المعنيّة (RP) إكمال الخطوات التالية لتفعيل FedCM على موقعها الإلكتروني:
- تأكَّد من السماح بنقاط نهاية FedCM على موقع RP الإلكتروني.
- استخدِم واجهة برمجة التطبيقات FedCM JavaScript API لبدء مصادقة المستخدم.
- يجب تقديم البيانات الوصفية (مثل عناوين URL لسياسة الخصوصية وبنود الخدمة) لموفِّر الهوية.
- [اختياري] يمكنك تخصيص تجربة المستخدم من خلال اختيار وضع تجربة المستخدم، أو تقديم بيانات تسجيل الدخول أو تلميحات النطاق، أو ضبط مَعلمات مخصّصة، أو طلب معلومات محدّدة عن المستخدم، أو تقديم رسالة خطأ مخصّصة، أو اختيار كيفية إعادة مصادقة المستخدمين.
بعد توفّر إعدادات موفِّر الهوية ونقاط النهاية، يمكن لموفِّري خدمات الربط الاتصال برقم navigator.credentials.get()
لطلب السماح للمستخدمين بتسجيل الدخول إلى موفِّر خدمات الربط باستخدام موفِّر الهوية.
قبل طلب البيانات من واجهة برمجة التطبيقات، عليك التأكّد من أنّ FedCM متاح في browser العميل. للتحقّق من توفّر FedCM، عليك تضمين هذا الرمز في عملية تنفيذ FedCM:
if ('IdentityCredential' in window) {
// If the feature is available, take action
} else {
// FedCM is not supported, use a different identity solution
}
للسماح للمستخدمين بتسجيل الدخول إلى موفِّر الهوية (IdP) على مقدّم الخدمة (RP) باستخدام FedCM، يمكن لمقدّم الخدمة (RP) الاتصال بـ navigator.credentials.get()
، على سبيل المثال:
const credential = await navigator.credentials.get({
identity: {
context: 'signin',
providers: [{
configURL: 'https://accounts.idp.example/config.json',
clientId: '********',
mode: 'active',
params: {
nonce: '******'
}
}]
}
});
const { token } = credential;
سمة السياق
باستخدام السمة الاختيارية context
، يمكن لـ RP تعديل السلسلة في واجهة مستخدم مربّع حوار FedCM (على سبيل المثال، "تسجيل الدخول إلى rp.example…" أو "استخدام idp.example…") لاستيعاب سياقات المصادقة المحدّدة مسبقًا، على سبيل المثال. يمكن أن تحتوي السمة context
على القيم التالية:
signin
(تلقائي)signup
use

على سبيل المثال، سيؤدي ضبط context
على use
إلى ظهور الرسالة التالية:

يعالج المتصفّح حالات استخدام الاشتراك وتسجيل الدخول بشكلٍ مختلف استنادًا إلى توفّر approved_clients
في الاستجابة من نقطة نهاية قائمة الحسابات. لن يعرض المتصفّح نص بيان الإفصاح "للمتابعة مع ...." إذا سبق للمستخدم الاشتراك في سياسة الخصوصية.
تستخدِم السمة providers
صفيفًا من عناصر IdentityProvider التي تتضمّن السمات التالية:
سمة "مقدّمو الخدمة"
تأخذ السمة providers
صفيفًا من عناصر IdentityProvider
التي تحتوي على
السمات التالية:
الموقع | الوصف |
---|---|
configURL (مطلوب) |
المسار الكامل لملف إعداد موفِّر الهوية |
clientId (مطلوب) |
معرّف عميل مقدّم الخدمة، الذي يصدره موفِّر الهوية. |
loginHint (اختياري) |
من خلال تحديد إحدى قيم login_hints التي يوفّرها
نقاط نهاية الحسابات، يعرِض مربّع حوار FedCM
الحساب المحدّد بشكل انتقائي. |
domainHint (اختياري) |
من خلال تحديد إحدى قيم domain_hints التي يوفّرها
نقاط نهاية الحسابات، يعرِض مربّع حوار FedCM
الحساب المحدّد بشكل انتقائي. |
mode (اختياري) |
سلسلة تحدِّد وضع واجهة المستخدم في FedCM يمكن أن تكون إحدى القيم التالية:
ملاحظة: تتوفّر المَعلمة mode في الإصدار 132 من Chrome.
|
fields (اختياري) |
صفيف من السلاسل التي تحدّد معلومات المستخدم ("الاسم" و"البريد الإلكتروني" و"الصورة") التي يحتاج إليها مقدّم طلب الاعتماد من موفّر الهوية لمشاركتها معه. ملاحظة: تتوفّر واجهة برمجة التطبيقات Field API في الإصدار 132 من Chrome والإصدارات الأحدث. |
params (اختياري) |
عنصر مخصّص يسمح بتحديد مَعلمات مفتاح/قيمة إضافية:
ملاحظة: تتوفّر params من الإصدار 132 من Chrome.
|
وضع النشاط
تتوافق FedCM مع إعدادات مختلفة لوضع تجربة المستخدم. الوضع التلقائي هو الوضع التلقائي، ولا يحتاج المطوّرون إلى ضبطه.
لاستخدام FedCM في الوضع النشط:
- تحقَّق من توفّر الميزة في متصفّح المستخدم.
- يمكنك استدعاء واجهة برمجة التطبيقات باستخدام إيماءة عابرة للمستخدم، مثل النقر على زر.
- نقْل المَعلمة
mode
إلى طلب البيانات من واجهة برمجة التطبيقات:
let supportsFedCmMode = false;
try {
navigator.credentials.get({
identity: Object.defineProperty(
// Check if this Chrome version supports the Mode API.
{}, 'mode', {
get: function () { supportsFedCmMode = true; }
}
)
});
} catch(e) {}
if (supportsFedCmMode) {
// The button mode is supported. Call the API with mode property:
return await navigator.credentials.get({
identity: {
providers: [{
configURL: 'https://idp.example/config.json',
clientId: '123',
}],
// The 'mode' value defines the UX mode of FedCM.
// - 'active': Must be initiated by user interaction (e.g., clicking a button).
// - 'passive': Can be initiated without direct user interaction.
mode: 'active'
}
});
}
رمز مخصّص في وضع النشاط
يسمح "الوضع النشط" لموفّري خدمات المصادقة بضم رمز الشعار الرسمي لموفّر خدمات الربط مباشرةً في استجابة نقطة نهاية البيانات الوصفية للعميل. على موفّر المحتوى الترويجي تقديم بيانات علامته التجارية مسبقًا.
استدعاء FedCM من داخل إطار iframe متعدد المصادر
يمكن استدعاء FedCM من داخل إطار iframe من مصدر مختلف باستخدام سياسة أذونات
identity-credentials-get
، إذا كان الإطار الرئيسي يسمح بذلك. للقيام بذلك، أضِف السمة allow="identity-credentials-get"
إلى علامة iframe
على النحو التالي:
<iframe src="https://fedcm-cross-origin-iframe.glitch.me" allow="identity-credentials-get"></iframe>
يمكنك الاطّلاع على طريقة استخدام هذه الميزة في مثال.
اختياريًا، إذا أرادت الإطار الرئيسي تقييد مصادر الاتصال بـ FedCM،
أرسِل رأس Permissions-Policy
مع قائمة بالمصادر المسموح بها.
Permissions-Policy: identity-credentials-get=(self "https://fedcm-cross-origin-iframe.glitch.me")
يمكنك الاطّلاع على مزيد من المعلومات عن آلية عمل "سياسة الأذونات" في مقالة التحكّم في ميزات المتصفّح باستخدام "سياسة الأذونات".
Login Hint API
باستخدام "ملاحظة تسجيل الدخول"، يمكن لمسؤول المعالجة أن يقترح الحساب الذي يجب أن يسجّل المستخدم الدخول باستخدامه. وقد يكون هذا الإجراء مفيدًا لإعادة مصادقة المستخدمين الذين لا يعرفون حسابهم السابق.
يمكن لتطبيقات RP عرض حساب معيّن بشكل انتقائي من خلال استدعاء
navigator.credentials.get()
باستخدام السمة loginHint
مع إحدى قيم
login_hints
التي تم جلبها من نقطة نهاية قائمة الحسابات، كما هو موضّح في نموذج الرمز البرمجي التالي:
return await navigator.credentials.get({
identity: {
providers: [{
configURL: 'https://idp.example/manifest.json',
clientId: '123',
// Accounts endpoint can specify a 'login_hints' array for an account.
// When RP specifies a 'exampleHint' value, only those accounts will be
// shown to the user whose 'login_hints' array contains the 'exampleHint'
// value
loginHint : 'exampleHint'
}]
}
});
عندما لا تتطابق أي حسابات مع loginHint
، يعرض مربّع حوار FedCM طلب تسجيل الدخول،
الذي يسمح للمستخدم بتسجيل الدخول إلى حساب موفِّر الهوية (IdP) يتطابق مع التلميح الذي طلبه
موفِّر الموارد (RP). عندما ينقر المستخدم على الطلب، يتم فتح نافذة منبثقة تتضمّن عنوان URL لتسجيل الدخول المحدّد في ملف الإعدادات. بعد ذلك، تتم إضافة
مَعلمات طلب البحث عن تلميح تسجيل الدخول وتلميح النطاق إلى الرابط.
Domain Hint API
يمكن لمسؤولي الحسابات المرجعية عرض الحسابات المرتبطة بنطاق معيّن فقط بشكل انتقائي. يمكن أن يكون ذلك مفيداً لمسؤولي الحسابات المحدودين بنطاق شركة.
لعرض حسابات نطاقات معيّنة فقط، يجب أن يستدعي RP navigator.credentials.get()
مع السمة domainHint
مع إحدى قيم domain_hints
التي تم جلبها من
نقطة نهاية قائمة الحسابات، كما هو موضّح في المثال التالي
للرمز البرمجي:
return await navigator.credentials.get({
identity: {
providers: [{
configURL: 'https://idp.example/manifest.json',
clientId: 'abc',
// Accounts endpoint can specify a 'domain_hints' array for an account.
// When RP specifies a '@domain.example' value, only those accounts will be
// shown to the user whose 'domain_hints' array contains the
// '@domain.example' value
domainHint : '@domain.example'
}]
}
});
عندما لا تتطابق أي حسابات مع domainHint
، يعرض مربّع حوار FedCM طلب تسجيل الدخول،
الذي يسمح للمستخدم بتسجيل الدخول إلى حساب موفِّر الهوية (IdP) يتطابق مع التلميح الذي طلبه
موفِّر الموارد (RP). عندما ينقر المستخدم على الطلب، يتم فتح نافذة منبثقة تتضمّن عنوان URL لتسجيل الدخول المحدّد في ملف الإعدادات. بعد ذلك، تتم إضافة
مَعلمات طلب البحث عن تلميح تسجيل الدخول وتلميح النطاق إلى الرابط.

domainHint
المعلمات المخصصة
تسمح ميزة "المَعلمات المخصّصة" لـ RP بتقديم مَعلمات إضافية من النوع "مفتاح/قيمة" إلى نقطة نهاية تأكيد الهوية. باستخدام Parameters API، يمكن لموفّري خدمات الربط تمرير مَعلمات إضافية إلى موفّر الهوية لطلب أذونات للموارد التي تتجاوز عملية تسجيل الدخول الأساسية. يمكن أن يكون تمرير مَعلمات إضافية مفيدًا في السيناريوهات التالية:
- على مقدّم الخدمة طلب أذونات إضافية ديناميكيًا لدى موفّر الهوية، مثل عنوان إرسال الفواتير أو إذن الوصول إلى التقويم. يمكن للمستخدم تفويض هذه الأذونات من خلال مسار تجربة مستخدم يتحكّم فيه موفِّر الهوية ويتم تشغيله باستخدام ميزة "المواصلة"، وسيشارك موفِّر الهوية هذه المعلومات بعد ذلك.
لاستخدام واجهة برمجة التطبيقات، يضيف المعالج المرجعي للمكالمات مَعلمات إلى السمة params
كعنصر في طلب navigator.credentials.get()
:
let {token} = await navigator.credentials.get({
identity: {
providers: [{
clientId: '1234',
configURL: 'https://idp.example/fedcm.json',
// Key/value pairs that need to be passed from the
// RP to the IdP but that don't really play any role with
// the browser.
params: {
IDP_SPECIFIC_PARAM: '1',
foo: 'BAR'
}
},
}
});
سيترجم المتصفّح ذلك تلقائيًا إلى طلب POST موجَّه إلى موفِّر الهوية مع المَعلمات ككائن مُسلسل بتنسيق JSON واحد مُشفَّر بعنوان URL:
// The assertion endpoint is drawn from the config file
POST /fedcm_assertion_endpoint HTTP/1.1
Host: idp.example
Origin: https://rp.example/
Content-Type: application/x-www-form-urlencoded
Cookie: 0x23223
Sec-Fetch-Dest: webidentity
// params are translated into urlencoded version of `{"IDP_SPECIFIC_PARAM":"1","foo":"bar"}`
account_id=123&client_id=client1234¶ms=%22%7B%5C%22IDP_SPECIFIC_PARAM%5C%22%3A1%2C%5C%22foo%5C%22%3A%5C%22BAR%5C%22%7D%22.
إذا كان مقدّم الخدمة يحتاج إلى أي أذونات إضافية، يمكن لموفّر الهوية تقديم رابط إعادة توجيه. على سبيل المثال، في node.js:
if (rpRequestsPermissions) {
// Response with a URL if the RP requests additional permissions
return res.json({
continue_on: '/example-redirect',
});
}
الحقول
يمكن لمسؤول المعالجة تحديد معلومات المستخدم (أيّ مجموعة من الاسم وعنوان البريد الإلكتروني وصورة الملف الشخصي) التي يحتاج إلى أن يشاركها معك موفِّر الهوية. سيتم تضمين المعلومات المطلوبة في واجهة مستخدم بيان الإفصاح في مربّع حوار FedCM. ستظهر للمستخدم رسالة لإعلامه بأنّ idp.example
ستشارك المعلومات المطلوبة مع rp.example
إذا اختار المستخدم تسجيل الدخول.

لاستخدام ميزة "الحقول"، على RP إضافة صفيف fields
في طلب navigator.credentials.get()
. يمكن أن تحتوي الحقول على أيّ ترتيب من name
وemail
وpicture
. ويمكن توسيع نطاق ذلك ليشمل المزيد من القيم في المستقبل.
سيظهر الطلب الذي يتضمّن fields
على النحو التالي:
let { token } = await navigator.credentials.get({
identity: {
providers: [{
// RP requests the IdP to share only user email and profile picture
fields: [ 'email', 'picture'],
clientId: '1234',
configURL: 'https://idp.example/fedcm.json',
},
}
});
سيترجم المتصفّح هذا الطلب تلقائيًا إلى طلب HTTP موجَّه إلى نقطة نهاية بيان الهوية التي تتضمّن المَعلمة fields
التي حدّدها مقدّم المراجعة، مع الحقول التي أفصح عنها المتصفّح للمستخدم في المَعلمة disclosure_shown_for
. من أجل التوافق مع الإصدارات القديمة، سيرسل المتصفّح أيضًا disclosure_text_shown=true
إذا تم عرض نص بيان الإفصاح وكانت الحقول المطلوبة تتضمّن جميع الحقول الثلاثة: 'name'
و'email'
و'picture'
.
POST /id_assertion_endpoint HTTP/1.1
Host: idp.example
Origin: https://rp.example/
Content-Type: application/x-www-form-urlencoded
Cookie: 0x23223
Sec-Fetch-Dest: webidentity
// The RP only requested to share email and picture. The browser will send `disclosure_text_shown=false`, as the 'name' field value is missing
account_id=123&client_id=client1234&disclosure_text_shown=false&fields=email,picture&disclosure_shown_for=email,picture
إذا كان fields
صفيفًا فارغًا، سيتخطّى وكيل المستخدم واجهة مستخدم بيان الإفصاح.

وينطبق ذلك حتى إذا كان الردّ من نقطة نهاية حسابات
لا يحتوي على رقم تعريف عميل يتطابق مع مقدّم الخدمة في approved_clients
.
في هذه الحالة، يكون العنصر disclosure_text_shown
الذي تم إرساله إلى نقطة نهاية تأكيد الهوية
غير صحيح في نص HTTP:
POST /id_assertion_endpoint HTTP/1.1
Host: idp.example
Origin: https://rp.example/
Content-Type: application/x-www-form-urlencoded
Cookie: 0x23223
Sec-Fetch-Dest: webidentity
account_id=123&client_id=client1234&nonce=234234&disclosure_text_shown=false
عرض رسالة خطأ
في بعض الأحيان، قد يتعذّر على موفّر الهوية إصدار رمز مميّز لأسباب مشروعة، مثل عندما يكون العميل غير مصرَّح له أو عندما يكون الخادم غير متاح مؤقتًا. إذا كان ردّ موفِّر الهوية هو "خطأ"، يمكن لمسؤول المعالجة رصده، ويمكن لمتصفّح Chrome إعلام المستخدم من خلال عرض واجهة مستخدِم المتصفّح التي تتضمّن معلومات الخطأ المقدَّمة من موفِّر الهوية.

try {
const cred = await navigator.credentials.get({
identity: {
providers: [
{
configURL: 'https://idp.example/manifest.json',
clientId: '1234',
},
],
}
});
} catch (e) {
const code = e.code;
const url = e.url;
}
إعادة مصادقة المستخدمين تلقائيًا بعد المصادقة الأولية
يمكن أن تسمح ميزة إعادة المصادقة التلقائية في إطار إدارة الهوية وإمكانية الوصول (FedCM) (يُشار إليها اختصارًا باسم "إعادة المصادقة التلقائية") للمستخدمين بإعادة المصادقة تلقائيًا عند عودتهم بعد المصادقة الأولية باستخدام إطار عمل FedCM. يشير "المصادقة المبدئية" هنا إلى أنّ المستخدم ينشئ حسابًا أو يسجّل الدخول إلى الموقع الإلكتروني للمورّد المصدق من خلال النقر على الزر "متابعة باسم..." في مربّع حوار تسجيل الدخول إلى FedCM للمرة الأولى في نسخة المتصفّح نفسها.
على الرغم من أنّ تجربة المستخدم الصريحة تكون منطقية قبل أن ينشئ المستخدم الحساب الموحّد لمنع التتبّع (وهو أحد الأهداف الرئيسية لإدارة الهوية وإمكانية الوصول)، تكون هذه التجربة مزعجة بلا داعٍ بعد أن يمرّ المستخدم بها مرة واحدة: بعد منح المستخدم الإذن للسماح بالتواصل بين مقدّم الخدمة الموثوق به وموفّر خدمة إدارة الهوية، لا تعود هناك فائدة من الخصوصية أو الأمان في فرض تأكيد صريح آخر من العميل لشيء سبق أن أقرّ به.
من خلال إعادة المصادقة التلقائية، يغيّر المتصفّح سلوكه استنادًا إلى الخيار الذي تحديده
لـ mediation
عند الاتصال بـ navigator.credentials.get()
.
const cred = await navigator.credentials.get({
identity: {
providers: [{
configURL: 'https://idp.example/fedcm.json',
clientId: '1234',
}],
},
mediation: 'optional', // this is the default
});
// `isAutoSelected` is `true` if auto-reauthn was performed.
const isAutoSelected = cred.isAutoSelected;
mediation
هو خاصية في واجهة برمجة التطبيقات
لإدارة بيانات الاعتماد، ويتصرف بالطريقة
نفسها
التي يتصرف بها
PasswordCredential
و
FederatedCredential
، وهو متوافق جزئيًا مع
PublicKeyCredential
أيضًا. يقبل الحقل القيم الأربع التالية:
'optional'
(الإعداد التلقائي): إعادة المصادقة التلقائية إن أمكن، وتتطلّب التوسّط في حال عدم توفّرها. ننصحك باختيار هذا الخيار في صفحة تسجيل الدخول.'required'
: تتطلّب هذه الميزة دائمًا التوسّط للمتابعة، على سبيل المثال، النقر على الزرّ "متابعة" في واجهة المستخدم. اختَر هذا الخيار إذا كان من المتوقّع من المستخدمين منح الإذن صراحةً في كل مرة يحتاجون فيها إلى المصادقة.'silent'
: إعادة المصادقة التلقائية إن أمكن، أو تعذُّر المصادقة بدون الحاجة إلى توسّط في حال عدم توفّر المصادقة ننصحك باختيار هذا الخيار في الصفحات التي تريد فيها إبقاء المستخدمين مسجّلين الدخول، ولكنها ليست صفحة تسجيل الدخول المخصّصة، مثل صفحة سلعة على موقع إلكتروني لشحن البضائع أو صفحة مقالة على موقع إلكتروني لأخبار.-
'conditional'
: يُستخدَم مع WebAuthn ولا يتوفّر مع FedCM في الوقت الحالي.
من خلال هذا الطلب، تحدث إعادة المصادقة التلقائية في الحالات التالية:
- ميزة FedCM متاحة للاستخدام. على سبيل المثال، لم يوقف المستخدم FedCM إما بشكل عام أو للمسؤول عن نقطة الاتصال في الإعدادات.
- استخدم المستخدم حسابًا واحدًا فقط مع FedCM API لتسجيل الدخول إلى الموقع الإلكتروني على المتصفّح هذا.
- سجَّل المستخدم الدخول إلى موفِّر الهوية باستخدام هذا الحساب.
- لم يتم إجراء إعادة المصادقة التلقائية خلال آخر 10 دقائق.
- لم يطلب مقدّم الطلب
navigator.credentials.preventSilentAccess()
تسجيل الدخول مجددًا بعد تسجيل الدخول السابق.
عند استيفاء هذه الشروط، تبدأ محاولة إعادة مصادقة
المستخدم تلقائيًا فور استدعاء navigator.credentials.get()
FedCM.
عندما يكون mediation: optional
، قد تكون إعادة المصادقة التلقائية
غير متاحة لأسباب يعرفها
المتصفّح فقط. يمكن لمسؤول المعالجة التحقّق مما إذا تم إجراء إعادة المصادقة التلقائية من خلال examining the isAutoSelected
property.
ويساعد ذلك في تقييم أداء واجهة برمجة التطبيقات وتحسين تجربة المستخدم وفقًا لذلك.
وفي حال عدم توفّر هذه الطريقة، قد يُطلب من المستخدم تسجيل الدخول من خلال mediation: required
، وهو مسار يتضمّن mediation: required
.
فرض التوسّط مع preventSilentAccess()
لن تؤدي إعادة مصادقة المستخدمين تلقائيًا بعد تسجيل خروجهم مباشرةً إلى تقديم
تجربة مستخدم جيدة جدًا. لهذا السبب، تتضمّن FedCM فترة هدوء تبلغ 10 دقائق بعد
إعادة المصادقة التلقائية لمنع هذا السلوك. وهذا يعني أنّ عملية إعادة المصادقة التلقائية تحدث
مرة واحدة على الأكثر كل 10 دقائق ما لم يسجّل المستخدم الدخول مجددًا في مهلة تعادل
10 دقائق. يجب أن يطلب مقدّم الخدمة navigator.credentials.preventSilentAccess()
طلبًا صريحًا من المتصفّح لإيقاف إعادة المصادقة التلقائية عندما يسجّل المستخدم الخروج من
مقدّم الخدمة صراحةً، على سبيل المثال، من خلال النقر على زر تسجيل الخروج.
function signout() {
navigator.credentials.preventSilentAccess();
location.href = '/signout';
}
يمكن للمستخدمين إيقاف ميزة إعادة المصادقة التلقائية في الإعدادات.
يمكن للمستخدمين إيقاف إعادة المصادقة التلقائية من قائمة الإعدادات:
- على متصفّح Chrome للكمبيوتر المكتبي، انقر على
chrome://password-manager/settings
> تسجيل الدخول تلقائيًا. - على متصفّح Chrome لأجهزة Android، افتح الإعدادات > مدير كلمات المرور > انقر على رمز الترس في أعلى يسار الشاشة > تسجيل الدخول تلقائيًا.
من خلال إيقاف التبديل، يمكن للمستخدم إيقاف سلوك إعادة المصادقة التلقائية بالكامل. يتم تخزين هذا الإعداد ومزامنته على جميع الأجهزة، إذا كان المستخدم مسجّلاً الدخول إلى حساب Google على مثيل Chrome وكانت المزامنة مفعّلة.
إلغاء ربط موفِّر الهوية بمسؤول المعالجة
إذا سجّل مستخدم الدخول إلى مقدّم الخدمة باستخدام موفِّر الهوية من خلال FedCM، يحفظ المتصفّح ملفًا شخصيًا على الجهاز كقائمة بالحسابات المرتبط بها. يمكن أن يبدأ RP عملية قطع الاتصال من خلال استدعاء الدالة
IdentityCredential.disconnect()
. يمكن استدعاء هذه الدالة من
إطار RP من المستوى الأعلى. يجب أن يقدّم موفِّر الربط configURL
وclientId
المستخدَمَين
ضمن موفِّر الهوية وaccountHint
لإيقاف اتصال موفِّر الهوية. يمكن أن يكون تلميح حساب
سلسلة عشوائية طالما أنّ نقطة نهاية إلغاء الربط يمكنها تحديد
الحساب، على سبيل المثال، عنوان بريد إلكتروني أو رقم تعريف مستخدم لا يطابق بالضرورة
رقم تعريف الحساب الذي قدّمته نقطة نهاية قائمة الحسابات:
// Disconnect an IdP account 'account456' from the RP 'https://idp.com/'. This is invoked on the RP domain.
IdentityCredential.disconnect({
configURL: 'https://idp.com/config.json',
clientId: 'rp123',
accountHint: 'account456'
});
يعرض IdentityCredential.disconnect()
Promise
. قد يُلقي هذا الوعد
استثناءً للأسباب التالية:
- لم يسجِّل المستخدم الدخول إلى موفِّر الموارد باستخدام موفِّر الهوية من خلال FedCM.
- يتمّ استدعاء واجهة برمجة التطبيقات من داخل إطار iframe بدون سياسة أذونات FedCM.
- configURL غير صالح أو لا يتضمّن نقطة نهاية لإيقاف الاتصال.
- تعذّر التحقّق من سياسة أمان المحتوى (CSP).
- هناك طلب في انتظار المراجعة لإلغاء الربط.
- أوقف المستخدم ميزة FedCM في إعدادات المتصفّح.
عندما تعرض نقطة نهاية إلغاء الربط في موفِّر الهوية رداً، يتم إلغاء ربط موفِّر الهوية ومسؤول المعالجة في المتصفّح ويتم حلّ الوعد. يتم تحديد معرّف الحسابات التي تم إلغاء ربطها في الاستجابة من نقطة نهاية إلغاء الربط.