Bên phụ thuộc (RP) cần hoàn tất các bước sau để bật FedCM trên trang web của họ:
- Đảm bảo rằng các điểm cuối FedCM được cho phép trên trang web của RP.
- Sử dụng FedCM JavaScript API để bắt đầu xác thực người dùng.
- Cung cấp siêu dữ liệu của họ (chẳng hạn như URL chính sách quyền riêng tư và điều khoản dịch vụ) cho IdP (hoặc nhiều IdP từ Chrome 136).
- [không bắt buộc] Tuỳ chỉnh trải nghiệm người dùng bằng cách chọn một chế độ trải nghiệm người dùng, cung cấp gợi ý đăng nhập hoặc gợi ý về miền, truyền tham số tuỳ chỉnh, yêu cầu thông tin cụ thể về người dùng, cung cấp thông báo lỗi tuỳ chỉnh hoặc chọn cách xác thực lại người dùng.
Gọi API FedCM trên Bên tin cậy
Sau khi có cấu hình và các điểm cuối của IdP, RP có thể gọi navigator.credentials.get()
để yêu cầu cho phép người dùng đăng nhập vào RP bằng IdP.
Trước khi gọi API, bạn cần xác nhận rằng FedCM có trên trình duyệt của người dùng. Để kiểm tra xem FedCM có dùng được hay không, hãy bao bọc mã này xung quanh quá trình triển khai FedCM của bạn:
if ('IdentityCredential' in window) {
// If the feature is available, take action
} else {
// FedCM is not supported, use a different identity solution
}
Để cho phép người dùng đăng nhập vào IdP trên RP bằng FedCM, RP có thể gọi navigator.credentials.get()
.
Kể từ Chrome 136, RP có thể hỗ trợ nhiều IdP bằng cách chỉ định một mảng gồm nhiều nhà cung cấp danh tính trong một lệnh gọi navigator.credentials.get()
duy nhất, ví dụ:
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
}
Hãy dùng thử tính năng nhiều IdP bằng cách đăng nhập bằng IdP1 và IdP2.
Thuộc tính ngữ cảnh
Với thuộc tính context
không bắt buộc, RP có thể sửa đổi chuỗi trong giao diện người dùng hộp thoại FedCM (ví dụ: "Đăng nhập vào rp.example…", "Sử dụng idp.example…") để đáp ứng các ngữ cảnh xác thực được xác định trước, chẳng hạn như. Thuộc tính context
có thể có các giá trị sau:
signin
(mặc định)signup
use

Ví dụ: việc đặt context
thành use
sẽ dẫn đến thông báo sau:

Trình duyệt xử lý các trường hợp sử dụng đăng ký và đăng nhập theo cách khác nhau, tuỳ thuộc vào sự tồn tại của approved_clients
trong phản hồi từ điểm cuối danh sách tài khoản. Trình duyệt sẽ không hiển thị văn bản công bố "Để tiếp tục với ...." nếu người dùng đã đăng ký với RP.
Thuộc tính providers
nhận một mảng gồm các đối tượng IdentityProvider có các thuộc tính sau:
Thuộc tính Providers
Thuộc tính providers
nhận một mảng các đối tượng IdentityProvider
có các thuộc tính sau:
Thuộc tính | Mô tả |
---|---|
configURL (bắt buộc) |
Đường dẫn đầy đủ của tệp cấu hình IdP. |
clientId (bắt buộc) |
Giá trị nhận dạng ứng dụng của RP, do IdP phát hành. |
loginHint (không bắt buộc) |
Bằng cách chỉ định một trong các giá trị login_hints do các điểm cuối tài khoản cung cấp, hộp thoại FedCM sẽ chọn lọc hiển thị tài khoản được chỉ định. |
domainHint (không bắt buộc) |
Bằng cách chỉ định một trong các giá trị domain_hints do các điểm cuối tài khoản cung cấp, hộp thoại FedCM sẽ chọn lọc hiển thị tài khoản được chỉ định. |
mode (không bắt buộc) |
Chuỗi chỉ định chế độ giao diện người dùng của FedCM. Thuộc tính này có thể có một trong các giá trị sau:
Lưu ý: Thông số mode được hỗ trợ từ Chrome 132.
|
fields (không bắt buộc) |
Mảng gồm các chuỗi chỉ định thông tin người dùng mà RP cần IdP chia sẻ với họ. Bạn có thể chỉ định các trường sau đây (không bắt buộc):
"username" và "tel" được hỗ trợ từ Chrome 141.
|
params (không bắt buộc) |
Đối tượng tuỳ chỉnh cho phép chỉ định các tham số khoá-giá trị bổ sung:
Lưu ý: params được hỗ trợ từ Chrome 132.
|
Chế độ đang hoạt động
FedCM hỗ trợ các cấu hình chế độ trải nghiệm người dùng khác nhau. Chế độ thụ động là chế độ mặc định và nhà phát triển không cần định cấu hình chế độ này.
Cách sử dụng FedCM ở chế độ đang hoạt động:
- Kiểm tra phạm vi cung cấp của tính năng trong trình duyệt của người dùng.
- Gọi API bằng một cử chỉ nhất thời của người dùng, chẳng hạn như một lượt nhấp vào nút.
- Truyền tham số
mode
vào lệnh gọi 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'
}
});
}
Hãy dùng thử chế độ đang hoạt động với bản minh hoạ này.
Biểu tượng tuỳ chỉnh ở chế độ đang hoạt động
Chế độ đang hoạt động cho phép IdP đưa biểu tượng logo chính thức của RP trực tiếp vào phản hồi điểm cuối siêu dữ liệu của ứng dụng khách. RP phải cung cấp dữ liệu về thương hiệu của họ trước.
Gọi FedCM từ bên trong một iframe trên nhiều nguồn gốc
Bạn có thể gọi FedCM từ bên trong iframe nhiều nguồn bằng chính sách quyền identity-credentials-get
, nếu khung mẹ cho phép. Để làm như vậy, hãy thêm thuộc tính allow="identity-credentials-get"
vào thẻ iframe như sau:
<iframe src="https://fedcm-cross-origin-iframe.glitch.me" allow="identity-credentials-get"></iframe>
Bạn có thể xem ví dụ thực tế trong ví dụ này.
Không bắt buộc: Nếu khung mẹ muốn hạn chế các nguồn gốc gọi FedCM, hãy gửi tiêu đề Permissions-Policy
kèm theo danh sách các nguồn gốc được phép.
Permissions-Policy: identity-credentials-get=(self "https://fedcm-cross-origin-iframe.glitch.me")
Bạn có thể tìm hiểu thêm về cách hoạt động của Chính sách về quyền tại phần Kiểm soát các tính năng của trình duyệt bằng Chính sách về quyền.
Login Hint API
Bằng cách sử dụng Gợi ý đăng nhập, RP có thể đề xuất tài khoản mà người dùng nên đăng nhập. Điều này có thể hữu ích cho việc xác thực lại những người dùng không chắc chắn về tài khoản mà họ đã sử dụng trước đây.
RP có thể chọn hiện một tài khoản cụ thể bằng cách gọi navigator.credentials.get()
bằng thuộc tính loginHint
với một trong các giá trị login_hints
được tìm nạp từ điểm cuối danh sách tài khoản, như minh hoạ trong mã mẫu sau:
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'
}]
}
});
Khi không có tài khoản nào khớp với loginHint
, hộp thoại FedCM sẽ hiện lời nhắc đăng nhập, cho phép người dùng đăng nhập vào một tài khoản IdP khớp với gợi ý mà RP yêu cầu. Khi người dùng nhấn vào lời nhắc, một cửa sổ bật lên sẽ mở ra với URL đăng nhập được chỉ định trong tệp cấu hình. Sau đó, đường liên kết sẽ được thêm các tham số truy vấn gợi ý đăng nhập và gợi ý về miền.
Domain Hint API
RP có thể chọn chỉ hiển thị những tài khoản được liên kết với một miền nhất định. Điều này có thể hữu ích cho những RP bị hạn chế trong một miền doanh nghiệp.
Để chỉ hiển thị các tài khoản thuộc một miền cụ thể, RP phải gọi navigator.credentials.get()
bằng thuộc tính domainHint
với một trong các giá trị domain_hints
được tìm nạp từ điểm cuối danh sách tài khoản, như trong mẫu mã sau:
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'
}]
}
});
Khi không có tài khoản nào khớp với domainHint
, hộp thoại FedCM sẽ hiện lời nhắc đăng nhập, cho phép người dùng đăng nhập vào một tài khoản IdP khớp với gợi ý mà RP yêu cầu. Khi người dùng nhấn vào lời nhắc, một cửa sổ bật lên sẽ mở ra với URL đăng nhập được chỉ định trong tệp cấu hình. Sau đó, đường liên kết sẽ được thêm các tham số truy vấn gợi ý đăng nhập và gợi ý về miền.

domainHint
.Hãy xem bản minh hoạ để biết thêm thông tin.
Thông số tùy chỉnh
Tính năng Tham số tuỳ chỉnh cho phép RP cung cấp các tham số khoá-giá trị bổ sung cho điểm cuối xác nhận danh tính. Với Parameters API, RP có thể truyền các thông số bổ sung đến IdP để yêu cầu quyền đối với các tài nguyên ngoài tính năng đăng nhập cơ bản. Việc truyền các tham số bổ sung có thể hữu ích trong những trường hợp sau:
- RP cần yêu cầu thêm các quyền khác mà IdP có, chẳng hạn như địa chỉ thanh toán hoặc quyền truy cập vào lịch. Người dùng có thể uỷ quyền cho các quyền này thông qua một quy trình trải nghiệm người dùng do IdP kiểm soát, được khởi chạy bằng tính năng Tiếp tục trên và sau đó IdP sẽ chia sẻ thông tin này.
Để sử dụng API này, RP sẽ thêm các tham số vào thuộc tính params
dưới dạng một đối tượng trong lệnh gọi 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'
}
},
}
});
Trình duyệt sẽ tự động chuyển yêu cầu này thành yêu cầu POST tới IdP với các tham số dưới dạng một đối tượng được chuyển đổi tuần tự JSON được mã hoá bằng 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.
Nếu RP cần thêm quyền, IdP có thể cung cấp một đường liên kết chuyển hướng. Ví dụ: trong node.js:
if (rpRequestsPermissions) {
// Response with a URL if the RP requests additional permissions
return res.json({
continue_on: '/example-redirect',
});
}
Trường
RP có thể chỉ định thông tin người dùng mà họ cần IdP chia sẻ với họ. Thông tin này có thể bao gồm mọi tổ hợp tên, địa chỉ email, tên người dùng, số điện thoại và ảnh hồ sơ. Thông tin được yêu cầu sẽ có trong giao diện người dùng thông báo của hộp thoại FedCM.
Người dùng đăng ký sẽ thấy một thông báo cho biết idp.example
sẽ chia sẻ thông tin được yêu cầu với rp.example
nếu người dùng chọn đăng ký. Nếu phản hồi từ điểm cuối tài khoản không bao gồm trường mà RP yêu cầu, thì văn bản công bố sẽ không bao gồm trường này. IdP sẽ tìm hiểu tất cả các trường được yêu cầu từ điểm cuối xác nhận danh tính và quyết định xem có nên thu thập thêm quyền của người dùng để tiếp tục hay không.

Để sử dụng tính năng Trường, RP nên thêm một mảng fields
vào lệnh gọi navigator.credentials.get()
. Các trường này có thể chứa những thuộc tính như name
, email
, tel
, username
hoặc picture
. Bạn có thể mở rộng để thêm nhiều giá trị hơn trong tương lai.
Yêu cầu có fields
sẽ có dạng như sau:
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',
},
}
});
Trình duyệt sẽ tự động dịch yêu cầu này thành một yêu cầu HTTP đến điểm cuối xác nhận danh tính, bao gồm tham số fields
do RP chỉ định, với các trường mà trình duyệt đã tiết lộ cho người dùng trong tham số disclosure_shown_for
. Để đảm bảo khả năng tương thích ngược, trình duyệt cũng sẽ gửi disclosure_text_shown=true
nếu văn bản công bố đã xuất hiện và các trường được yêu cầu bao gồm cả 3 trường: 'name'
, 'email'
và 'picture'
. Từ Chrome 141, giá trị của disclosure_text_shown
không cho biết liệu văn bản công bố có thực sự hiển thị cho người dùng hay không.
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
Nếu fields
là một mảng trống, thì tác nhân người dùng sẽ bỏ qua giao diện người dùng công bố.

Điều này vẫn xảy ra ngay cả khi phản hồi từ điểm cuối tài khoản không chứa mã ứng dụng khách khớp với RP trong approved_clients
.
Trong trường hợp này, disclosure_text_shown
được gửi đến điểm cuối xác nhận mã nhận dạng là sai trong phần nội dung 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
Hiện thông báo lỗi
Đôi khi, IdP có thể không phát hành được mã thông báo vì những lý do chính đáng, chẳng hạn như khi ứng dụng khách không được uỷ quyền hoặc máy chủ tạm thời không hoạt động. Nếu IdP trả về phản hồi "lỗi", thì RP có thể nắm bắt phản hồi đó và Chrome có thể thông báo cho người dùng bằng cách hiện giao diện người dùng trình duyệt kèm theo thông tin lỗi do IdP cung cấp.

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;
}
Tự động xác thực lại người dùng sau lần xác thực ban đầu
Tính năng tự động xác thực lại FedCM ("auto-reauthn") có thể cho phép người dùng tự động xác thực lại. Bạn phải đáp ứng các điều kiện sau để tự động xác thực lại người dùng:
- Trước đây, người dùng đã thực hiện quy trình xác thực ban đầu bằng FedCM. "Lần xác thực ban đầu" ở đây có nghĩa là người dùng tạo tài khoản hoặc đăng nhập vào trang web của RP bằng cách nhấn vào nút "Tiếp tục với..." trên hộp thoại đăng nhập của FedCM lần đầu tiên trên cùng một phiên bản trình duyệt.
- Người dùng chỉ có một tài khoản trả lại. Nếu có nhiều tài khoản đang hoạt động cho nhiều IdP, người dùng sẽ không được xác thực lại tự động.
Mặc dù trải nghiệm người dùng rõ ràng có ý nghĩa trước khi người dùng tạo tài khoản liên kết để ngăn chặn hoạt động theo dõi (một trong những mục tiêu chính của FedCM), nhưng trải nghiệm này không cần thiết và gây phiền toái sau khi người dùng đã trải qua một lần: sau khi người dùng cấp quyền cho phép giao tiếp giữa RP và IdP, không có lợi ích nào về quyền riêng tư hoặc bảo mật khi thực thi một lần xác nhận rõ ràng khác của người dùng cho một việc mà họ đã xác nhận trước đó.
Với tính năng tự động xác thực lại, trình duyệt sẽ thay đổi hành vi của mình tuỳ thuộc vào lựa chọn mà bạn chỉ định cho mediation
khi gọi 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
là một thuộc tính trong API Quản lý thông tin xác thực, thuộc tính này hoạt động theo cách tương tự như đối với PasswordCredential và FederatedCredential, đồng thời được PublicKeyCredential hỗ trợ một phần. Thuộc tính này chấp nhận 4 giá trị sau:
'optional'
(mặc định): Tự động xác thực lại nếu có thể, yêu cầu một hoạt động trung gian nếu không. Bạn nên chọn chế độ này trên trang đăng nhập.'required'
: Luôn yêu cầu một hoạt động trung gian để tiếp tục, ví dụ: nhấp vào nút "Tiếp tục" trên giao diện người dùng. Chọn lựa chọn này nếu người dùng của bạn dự kiến sẽ cấp quyền một cách rõ ràng mỗi khi họ cần được xác thực.'silent'
: Tự động xác thực lại nếu có thể, âm thầm thất bại mà không cần yêu cầu một hoạt động trung gian nếu không. Bạn nên chọn lựa chọn này trên các trang khác ngoài trang đăng nhập chuyên dụng nhưng bạn muốn người dùng vẫn đăng nhập, chẳng hạn như trang mặt hàng trên trang web vận chuyển hoặc trang bài viết trên trang web tin tức.'conditional'
: Dùng cho WebAuthn và hiện không dùng được cho FedCM.
Với lệnh gọi này, quá trình xác thực lại tự động sẽ diễn ra trong các điều kiện sau:
- Bạn có thể sử dụng FedCM. Ví dụ: người dùng chưa tắt FedCM trên toàn cầu hoặc cho RP trong phần cài đặt.
- Người dùng chỉ sử dụng một tài khoản có FedCM API để đăng nhập vào trang web trên trình duyệt này.
- Người dùng đã đăng nhập vào IdP bằng tài khoản đó.
- Quá trình xác thực lại tự động không diễn ra trong 10 phút vừa qua.
- RP chưa gọi
navigator.credentials.preventSilentAccess()
sau lần đăng nhập trước.
Khi các điều kiện này được đáp ứng, hệ thống sẽ bắt đầu tự động xác thực lại người dùng ngay khi navigator.credentials.get()
FedCM được gọi.
Khi mediation: optional
, tính năng tự động xác thực lại có thể không dùng được vì những lý do mà chỉ trình duyệt mới biết; RP có thể kiểm tra xem tính năng tự động xác thực lại có được thực hiện hay không bằng cách kiểm tra thuộc tính isAutoSelected
.
Điều này hữu ích cho việc đánh giá hiệu suất API và cải thiện trải nghiệm người dùng cho phù hợp.
Ngoài ra, khi không có sẵn, người dùng có thể được nhắc đăng nhập bằng hoạt động trung gian rõ ràng của người dùng, đây là một quy trình có mediation: required
.
Thực thi hoạt động dàn xếp bằng preventSilentAccess()
Việc tự động xác thực lại người dùng ngay sau khi họ đăng xuất sẽ không mang lại trải nghiệm tốt cho người dùng. Đó là lý do FedCM có khoảng thời gian không hoạt động là 10 phút sau khi tự động xác thực lại để ngăn chặn hành vi này. Điều này có nghĩa là quá trình xác thực lại tự động sẽ diễn ra tối đa một lần trong mỗi 10 phút, trừ phi người dùng đăng nhập lại trong vòng 10 phút. RP nên gọi navigator.credentials.preventSilentAccess()
để yêu cầu trình duyệt tắt tính năng tự động xác thực lại một cách rõ ràng khi người dùng đăng xuất khỏi RP một cách rõ ràng, chẳng hạn như bằng cách nhấp vào nút đăng xuất.
function signout() {
navigator.credentials.preventSilentAccess();
location.href = '/signout';
}
Người dùng có thể chọn không sử dụng tính năng tự động xác thực lại trong phần cài đặt
Người dùng có thể chọn không sử dụng tính năng tự động xác thực lại trong trình đơn cài đặt:
- Trên Chrome dành cho máy tính, hãy chuyển đến phần
chrome://password-manager/settings
> Tự động đăng nhập. - Trên Chrome dành cho Android, hãy mở phần Cài đặt > Trình quản lý mật khẩu > Nhấn vào biểu tượng bánh răng ở góc trên cùng bên phải > Tự động đăng nhập.
Bằng cách tắt nút bật/tắt này, người dùng có thể chọn không sử dụng hành vi tự động xác thực lại. Chế độ cài đặt này được lưu trữ và đồng bộ hoá trên các thiết bị, nếu người dùng đã đăng nhập vào Tài khoản Google trên phiên bản Chrome và bật tính năng đồng bộ hoá.
Ngắt kết nối IdP khỏi RP
Nếu trước đây người dùng đã đăng nhập vào RP bằng IdP thông qua FedCM, thì mối quan hệ này sẽ được trình duyệt ghi nhớ cục bộ dưới dạng danh sách các tài khoản được kết nối. RP có thể bắt đầu ngắt kết nối bằng cách gọi hàm IdentityCredential.disconnect()
. Bạn có thể gọi hàm này từ một khung RP cấp cao nhất. RP cần truyền một configURL
, clientId
mà RP sử dụng trong IdP và một accountHint
để ngắt kết nối IdP. Gợi ý về tài khoản có thể là một chuỗi tuỳ ý miễn là điểm ngắt kết nối có thể xác định tài khoản, ví dụ: địa chỉ email hoặc mã nhận dạng người dùng không nhất thiết phải khớp với mã nhận dạng tài khoản mà điểm cuối danh sách tài khoản đã cung cấp:
// 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()
trả về Promise
. Lệnh hứa này có thể đưa ra một ngoại lệ vì những lý do sau:
- Người dùng chưa đăng nhập vào RP bằng IdP thông qua FedCM.
- API được gọi từ bên trong một iframe mà không có chính sách về quyền FedCM.
- configURL không hợp lệ hoặc thiếu điểm cuối ngắt kết nối.
- Không vượt qua được bước kiểm tra Chính sách bảo mật nội dung (CSP).
- Có một yêu cầu ngắt kết nối đang chờ xử lý.
- Người dùng đã tắt FedCM trong phần cài đặt trình duyệt.
Khi điểm cuối ngắt kết nối của IdP trả về một phản hồi, RP và IdP sẽ bị ngắt kết nối trên trình duyệt và lời hứa sẽ được giải quyết. Mã nhận dạng của các tài khoản bị ngắt kết nối được chỉ định trong phản hồi từ điểm cuối ngắt kết nối.