طرفهای ذینفع (RP) برای فعال کردن FedCM در سایت خود باید مراحل زیر را انجام دهند:
- مطمئن شوید که نقاط پایانی FedCM در سایت RP مجاز هستند.
- برای شروع احراز هویت کاربر، از API جاوا اسکریپت FedCM استفاده کنید.
- ابردادههای خود (مانند آدرسهای اینترنتی سیاست حفظ حریم خصوصی و شرایط خدمات) را در اختیار IdP (یا چندین IdP از Chrome 136) قرار دهند.
- [اختیاری] با انتخاب یک حالت UX ، ارائه نکات ورود به سیستم یا دامنه، ارسال پارامترهای سفارشی ، درخواست اطلاعات خاص کاربر ، ارائه یک پیام خطای سفارشی یا انتخاب نحوه احراز هویت مجدد کاربران، تجربه کاربری را سفارشی کنید.
با FedCM API در طرف اعتماد تماس بگیرید
پس از اینکه پیکربندی و نقاط پایانی IdP در دسترس قرار گرفتند، RPها میتوانند navigator.credentials.get()
را فراخوانی کنند تا درخواست کنند که به کاربر اجازه ورود به RP با IdP داده شود.
قبل از فراخوانی API، باید تأیید کنید که FedCM در مرورگر کاربر در دسترس است . برای بررسی اینکه آیا FedCM در دسترس است، این کد را در پیادهسازی FedCM خود قرار دهید:
if ('IdentityCredential' in window) {
// If the feature is available, take action
} else {
// FedCM is not supported, use a different identity solution
}
برای اینکه به یک کاربر اجازه داده شود تا با استفاده از FedCM در RP به IdP وارد شود، RP میتواند navigator.credentials.get()
را فراخوانی کند. از کروم ۱۳۶، RP میتواند با مشخص کردن آرایهای از چندین ارائهدهنده هویت در یک فراخوانی navigator.credentials.get()
از چندین IdP پشتیبانی کند، برای مثال:
const credential = await navigator.credentials.get({
identity: {
// Specify the IdP (or multiple IdPs, supported from Chrome 136) this Relying Party supports
providers: [
{
configURL: 'https://accounts.idp-1.example/config.json',
clientId: '********'
},
{
configURL: 'https://accounts.idp-2.example/config.json',
clientId: '********'
}]
}
},
);
const { token } = credential;
// Get the current IdP's configURL to identify which provider the user is signed in with
const currentIdpConfigUrl = credential.configURL;
if (currentIdpConfigUrl === 'https://idp1.example/foo.json') {
// handle the case where the user signed in with idp1
} else if (currentIdpConfigUrl === 'https://idp2.example/bar.json') {
// handle the case where the user signed in with idp2
}
با ورود به سیستم با IdP1 و IdP2 ، ویژگی IdP های چندگانه را امتحان کنید.
ویژگی زمینه
با استفاده از ویژگی اختیاری context
، RP میتواند رشته موجود در رابط کاربری دیالوگ FedCM را تغییر دهد (برای مثال، "Sign in to rp.example…"، "Use idp.example…") تا زمینههای احراز هویت از پیش تعریف شده را در خود جای دهد. ویژگی context
میتواند مقادیر زیر را داشته باشد:
-
signin
(پیشفرض) -
signup
-
use

برای مثال، تنظیم context
برای use
، پیام زیر را در پی خواهد داشت:

مرورگر، بسته به وجود approved_clients
در پاسخ از نقطه پایانی لیست حسابها، موارد استفاده ثبت نام و ورود را به طور متفاوتی مدیریت میکند. اگر کاربر قبلاً در RP ثبت نام کرده باشد، مرورگر متن افشای اطلاعات "برای ادامه با ...." را نمایش نمیدهد.
ویژگی providers
آرایهای از اشیاء IdentityProvider
را میگیرد که دارای ویژگیهای زیر هستند:
ملک ارائه دهندگان
ویژگی providers
آرایهای از اشیاء IdentityProvider
را میگیرد که دارای ویژگیهای زیر هستند:
ملک | توضیحات |
---|---|
configURL (الزامی) | مسیر کامل فایل پیکربندی IdP. |
clientId (الزامی) | شناسهی کلاینتِ RP، صادر شده توسط IdP. |
loginHint (اختیاری) | با مشخص کردن یکی از مقادیر login_hints ارائه شده توسط نقاط انتهایی حسابها ، کادر محاورهای FedCM به صورت انتخابی حساب مشخص شده را نمایش میدهد. |
domainHint (اختیاری) | با مشخص کردن یکی از مقادیر domain_hints ارائه شده توسط نقاط انتهایی حسابها ، کادر محاورهای FedCM به صورت انتخابی حساب مشخص شده را نمایش میدهد. |
mode (اختیاری) | رشتهای که حالت رابط کاربری FedCM را مشخص میکند. میتواند یکی از مقادیر زیر را داشته باشد:
توجه: پارامتر mode از کروم ۱۳۲ پشتیبانی میشود. |
fields (اختیاری) | آرایهای از رشتهها که اطلاعات کاربری را که RP برای اشتراکگذاری با IdP به آن نیاز دارد، مشخص میکند. فیلدهای زیر میتوانند به صورت اختیاری مشخص شوند:
"username" و "tel" از کروم ۱۴۱ پشتیبانی میشوند. |
params (اختیاری) | شیء سفارشی که امکان تعیین پارامترهای کلید-مقدار اضافی را فراهم میکند:
نکته: params از کروم ۱۳۲ پشتیبانی میشود. |
حالت فعال
FedCM از پیکربندیهای مختلف حالت UX پشتیبانی میکند. حالت غیرفعال، حالت پیشفرض است و توسعهدهندگان نیازی به پیکربندی آن ندارند.
برای استفاده از FedCM در حالت فعال:
- بررسی در دسترس بودن ویژگی در مرورگر کاربر.
- API را با یک حرکت گذرای کاربر، مانند کلیک روی دکمه، فراخوانی کنید.
- پارامتر
mode
را به فراخوانی API ارسال کنید:
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'
}
});
}
حالت فعال را با این نسخه آزمایشی امتحان کنید.
آیکون سفارشی در حالت فعال
حالت فعال به IdPها اجازه میدهد تا نماد لوگوی رسمی RP را مستقیماً در پاسخ فراداده نقطه پایانی کلاینت قرار دهند. RP باید دادههای برند خود را از قبل ارائه دهد.
فراخوانی 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")
میتوانید در بخش «کنترل ویژگیهای مرورگر با سیاست مجوزها» درباره نحوه عملکرد سیاست مجوزها بیشتر بدانید.
API راهنمای ورود
با استفاده از راهنمای ورود، RP میتواند به کاربر توصیه کند که با کدام حساب کاربری وارد سیستم شود. این میتواند برای تأیید مجدد هویت کاربرانی که مطمئن نیستند قبلاً از کدام حساب کاربری استفاده کردهاند، مفید باشد.
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 که با hint درخواستی RP مطابقت دارد، وارد شود. وقتی کاربر روی prompt ضربه میزند، یک پنجرهی گفتگو با URL ورود مشخص شده در فایل پیکربندی باز میشود. سپس لینک با hint ورود و پارامترهای کوئری domain hint اضافه میشود.
API راهنمای دامنه
RPها میتوانند به صورت انتخابی فقط حسابهای مرتبط با یک دامنه خاص را نشان دهند. این میتواند برای RPهایی که محدود به یک دامنه شرکتی هستند مفید باشد.
برای نمایش فقط حسابهای دامنه خاص، 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 که با hint درخواستی RP مطابقت دارد، وارد شود. وقتی کاربر روی prompt ضربه میزند، یک پنجرهی گفتگو با URL ورود مشخص شده در فایل پیکربندی باز میشود. سپس لینک با hint ورود و پارامترهای query hint دامنه اضافه میشود.

domainHint
مطابقت ندارد.برای جزئیات بیشتر، نسخه آزمایشی (دمو) را بررسی کنید.
پارامترهای سفارشی
ویژگی پارامترهای سفارشی به RP اجازه میدهد تا پارامترهای کلید-مقدار اضافی را به نقطه پایانی ادعای شناسه ارائه دهد. با استفاده از API پارامترها، RPها میتوانند پارامترهای اضافی را به IdP ارسال کنند تا مجوزهایی فراتر از ورود اولیه به سیستم را درخواست کنند. ارسال پارامترهای اضافی میتواند در این سناریوها مفید باشد:
- RP باید مجوزهای اضافی را که IdP دارد، مانند آدرس صورتحساب یا دسترسی به تقویم، به صورت پویا درخواست کند. کاربر میتواند این مجوزها را از طریق یک جریان UX کنترلشده توسط IdP که با استفاده از ویژگی Continue on راهاندازی میشود، تأیید کند و IdP سپس این اطلاعات را به اشتراک میگذارد.
برای استفاده از API، RP پارامترهایی را به عنوان یک شیء در فراخوانی navigator.credentials.get()
به ویژگی params
اضافه میکند:
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 به IdP با پارامترهایی به عنوان یک شیء سریالی شده 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.
اگر RP به مجوزهای اضافی نیاز داشته باشد، IdP میتواند یک لینک تغییر مسیر ارائه دهد. برای مثال، در node.js:
if (rpRequestsPermissions) {
// Response with a URL if the RP requests additional permissions
return res.json({
continue_on: '/example-redirect',
});
}
فیلدها
RP میتواند اطلاعات کاربری مورد نیاز خود را که IdP باید با او به اشتراک بگذارد، مشخص کند. این میتواند شامل هر ترکیبی از نام، آدرس ایمیل، نام کاربری، شماره تلفن و تصویر پروفایل باشد. اطلاعات درخواستی در رابط کاربری افشای اطلاعات در پنجره گفتگوی FedCM گنجانده خواهد شد.
کاربرانی که ثبتنام میکنند پیامی را مشاهده خواهند کرد که به آنها اطلاع میدهد در صورت تمایل کاربر به ثبتنام، idp.example
اطلاعات درخواستی را با rp.example
به اشتراک خواهد گذاشت. اگر پاسخ از نقطه پایانی حسابها شامل فیلدی نباشد که RP درخواست کرده است، متن افشا شامل این فیلد نخواهد بود. IdP تمام فیلدهای درخواستی را از نقطه پایانی ادعای شناسه دریافت میکند و تصمیم میگیرد که آیا باید مجوز کاربر بیشتری برای ادامه کار جمعآوری کند یا خیر.

برای استفاده از ویژگی Fields، RP باید یک آرایه fields
در فراخوانی navigator.credentials.get()
اضافه کند. فیلدها میتوانند شامل ویژگیهایی مانند name
، email
، tel
، username
یا picture
باشند. این میتواند در آینده برای شامل شدن مقادیر بیشتر گسترش یابد. یک درخواست با fields
به این شکل خواهد بود:
let { token } = await navigator.credentials.get({
identity: {
providers: [{
// RP requests the IdP to share only username and profile picture
fields: [ 'username', 'picture'],
clientId: '1234',
configURL: 'https://idp.example/fedcm.json',
},
}
});
مرورگر به طور خودکار آن را به یک درخواست HTTP به نقطه پایانی ادعای شناسه که شامل پارامتر fields
مشخص شده توسط RP است، ترجمه میکند و فیلدهایی را که مرورگر در پارامتر disclosure_shown_for
به کاربر فاش کرده است، نمایش میدهد. برای سازگاری با نسخههای قبلی، مرورگر همچنین در صورتی که متن افشا نشان داده شده باشد و فیلدهای درخواستی شامل هر سه فیلد 'name'
، 'email'
و 'picture'
باشند، disclosure_text_shown=true
ارسال میکند. از کروم ۱۴۱، مقدار disclosure_text_shown
نشان نمیدهد که آیا متن افشا واقعاً به کاربر نمایش داده شده است یا خیر.
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
یک آرایه خالی باشد، مرورگر از رابط کاربری افشا صرف نظر میکند.

این مورد حتی اگر پاسخ از نقطه پایانی حسابها حاوی شناسه کلاینتی نباشد که با RP در 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
نمایش پیام خطا
گاهی اوقات، ممکن است IdP به دلایل موجهی، مانند زمانی که کلاینت غیرمجاز است یا سرور موقتاً در دسترس نیست، نتواند توکن صادر کند. اگر IdP پاسخ "خطا" را برگرداند، RP میتواند آن را دریافت کند و Chrome میتواند با نمایش رابط کاربری مرورگر با اطلاعات خطای ارائه شده توسط IdP، به کاربر اطلاع دهد.

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 برای اولین بار در همان مرورگر، وارد وبسایت RP میشود.
- کاربر فقط یک حساب کاربری برگشتی دارد. اگر حسابهای کاربری برگشتی برای چندین IdP وجود داشته باشد، کاربر به طور خودکار دوباره احراز هویت نخواهد شد.
اگرچه تجربه کاربری صریح قبل از اینکه کاربر حساب کاربری فدرال را برای جلوگیری از ردیابی ایجاد کند (که یکی از اهداف اصلی FedCM است) منطقی به نظر میرسد، اما پس از اینکه کاربر یک بار آن را انجام داد، به طور غیرضروری دست و پا گیر میشود: پس از اینکه کاربر اجازه برقراری ارتباط بین RP و IdP را اعطا کرد، هیچ مزیت امنیتی یا حریم خصوصی برای اجرای تأیید صریح کاربر دیگری برای چیزی که قبلاً آن را تأیید کرده است، وجود ندارد.
با احراز هویت خودکار، مرورگر بسته به گزینهای که هنگام فراخوانی navigator.credentials.get()
برای mediation
مشخص میکنید، رفتار خود را تغییر میدهد.
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
یک ویژگی در API مدیریت اعتبارنامه است، رفتاری مشابه با PasswordCredential و FederatedCredential دارد و تا حدی توسط PublicKeyCredential نیز پشتیبانی میشود. این ویژگی چهار مقدار زیر را میپذیرد:
-
'optional'
(پیشفرض): در صورت امکان، احراز هویت خودکار و در غیر این صورت، نیاز به میانجیگری دارد. توصیه میکنیم این گزینه را در صفحه ورود انتخاب کنید. -
'required'
: همیشه برای ادامه نیاز به میانجیگری دارد، مثلاً کلیک روی دکمه «ادامه» در رابط کاربری. اگر از کاربرانتان انتظار میرود هر بار که نیاز به احراز هویت دارند، صریحاً مجوز بدهند، این گزینه را انتخاب کنید. -
'silent'
: در صورت امکان، احراز هویت خودکار و در غیر این صورت، بدون نیاز به میانجیگری، به صورت بیصدا از کار میافتد. توصیه میکنیم این گزینه را در صفحاتی غیر از صفحه ورود اختصاصی انتخاب کنید، اما در جایی که میخواهید کاربران را در حالت ورود نگه دارید - به عنوان مثال، صفحه کالا در یک وبسایت حمل و نقل یا صفحه مقاله در یک وبسایت خبری. -
'conditional'
: برای WebAuthn استفاده میشود و در حال حاضر برای FedCM در دسترس نیست.
با این فراخوانی، احراز هویت خودکار تحت شرایط زیر اتفاق میافتد:
- FedCM برای استفاده در دسترس است. به عنوان مثال، کاربر FedCM را نه به صورت کلی و نه برای RP در تنظیمات غیرفعال نکرده است.
- کاربر فقط از یک حساب کاربری با FedCM API برای ورود به وبسایت در این مرورگر استفاده کرده است.
- کاربر با آن حساب کاربری وارد IdP شده است.
- احراز هویت خودکار در ده دقیقه گذشته انجام نشده است.
- RP بعد از ورود قبلی، تابع
navigator.credentials.preventSilentAccess()
را فراخوانی نکرده است.
وقتی این شرایط برآورده شوند، به محض فراخوانی تابع navigator.credentials.get()
از FedCM، تلاش برای احراز هویت مجدد خودکار کاربر آغاز میشود.
وقتی mediation: optional
، ممکن است احراز هویت خودکار به دلایلی که فقط مرورگر میداند در دسترس نباشد ؛ RP میتواند با بررسی ویژگی isAutoSelected
بررسی کند که آیا احراز هویت خودکار انجام میشود یا خیر.
این برای ارزیابی عملکرد API و بهبود UX بر اساس آن مفید است. همچنین، هنگامی که در دسترس نیست، ممکن است از کاربر خواسته شود با واسطهگری صریح کاربر وارد سیستم شود، که جریانی با mediation: required
.
اجرای میانجیگری با preventSilentAccess()
احراز هویت مجدد خودکار کاربران بلافاصله پس از خروج از سیستم، تجربه کاربری خیلی خوبی ایجاد نمیکند. به همین دلیل است که FedCM یک دوره سکوت 10 دقیقهای پس از احراز هویت خودکار برای جلوگیری از این رفتار در نظر گرفته است. این بدان معناست که احراز هویت مجدد خودکار حداکثر هر 10 دقیقه یک بار اتفاق میافتد، مگر اینکه کاربر ظرف 10 دقیقه دوباره وارد سیستم شود. RP باید تابع navigator.credentials.preventSilentAccess()
را فراخوانی کند تا صریحاً از مرورگر درخواست کند که احراز هویت خودکار را غیرفعال کند، زمانی که کاربر صریحاً از RP خارج میشود، به عنوان مثال، با کلیک بر روی دکمه خروج.
function signout() {
navigator.credentials.preventSilentAccess();
location.href = '/signout';
}
کاربران میتوانند در تنظیمات، احراز هویت خودکار را غیرفعال کنند
کاربران میتوانند از منوی تنظیمات، احراز هویت خودکار را غیرفعال کنند:
- در کروم دسکتاپ، به
chrome://password-manager/settings
> Sign in automatically بروید. - در کروم اندروید، تنظیمات > مدیریت رمز عبور > روی چرخدنده در گوشه بالا سمت راست ضربه بزنید > ورود خودکار.
با غیرفعال کردن این گزینه، کاربر میتواند از رفتار احراز هویت خودکار بهطور کلی انصراف دهد. این تنظیم در صورتی که کاربر در نمونه کروم وارد حساب گوگل خود شده باشد و همگامسازی فعال باشد، در بین دستگاهها ذخیره و همگامسازی میشود.
IdP را از RP جدا کنید
اگر کاربری قبلاً با استفاده از IdP از طریق FedCM وارد RP شده باشد، این رابطه توسط مرورگر به صورت محلی به عنوان لیست حسابهای متصل به خاطر سپرده میشود. RP ممکن است با فراخوانی تابع IdentityCredential.disconnect()
قطع ارتباط را آغاز کند. این تابع را میتوان از یک فریم RP سطح بالا فراخوانی کرد. RP برای قطع ارتباط IdP باید یک configURL
، clientId
مورد استفاده در IdP و یک accountHint
ارسال کند. یک account hint میتواند یک رشته دلخواه باشد، مادامی که نقطه پایانی قطع ارتباط بتواند حساب را شناسایی کند، به عنوان مثال یک آدرس ایمیل یا شناسه کاربری که لزوماً با شناسه حسابی که نقطه پایانی لیست حساب ارائه کرده است، مطابقت ندارد:
// 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
برمیگرداند. این Promise ممکن است به دلایل زیر یک استثنا ایجاد کند:
- کاربر با استفاده از IdP از طریق FedCM وارد RP نشده است.
- این API از درون یک iframe و بدون سیاست مجوزهای FedCM فراخوانی میشود.
- configURL نامعتبر است یا نقطه پایانی قطع ارتباط را ندارد.
- بررسی سیاست امنیتی محتوا (CSP) ناموفق بود.
- یک درخواست قطع ارتباط در حال بررسی است.
- کاربر FedCM را در تنظیمات مرورگر غیرفعال کرده است.
وقتی نقطه پایانی قطع اتصال IdP پاسخی را برمیگرداند ، RP و IdP در مرورگر قطع میشوند و promise حل میشود. شناسه حسابهای قطع شده در پاسخ از نقطه پایانی قطع اتصال مشخص میشود.