IdentityProvider:getUserInfo() 靜態方法
IdentityProvider 介面的 getUserInfo() 靜態方法返回已登入使用者的資訊,可用於提供個性化的歡迎訊息和登入按鈕。此方法必須從 IdentityProvider 源的 <iframe> 中呼叫,這樣 信賴方 (RP) 指令碼就無法訪問該資料。這必須在使用者登入到 RP 網站後發生。
這種模式在使用身份聯合進行登入的網站上已經很常見,但 getUserInfo() 提供了一種無需依賴 第三方 Cookie 即可實現此目的的方法。
語法
IdentityProvider.getUserInfo(config)
引數
返回值
一個 Promise,該 Promise 會解析為一個物件陣列,每個物件都包含表示單獨使用者帳戶的資訊。每個物件都包含以下屬性
異常
InvalidStateErrorDOMException-
如果提供的
configURL無效,或者嵌入文件的原點與configURL不匹配,則丟擲此異常。 NetworkErrorDOMException-
如果瀏覽器無法連線到 IdP,或者
getUserInfo()是從頂層文件呼叫的,則丟擲此異常。 NotAllowedErrorDOMException-
如果嵌入的
<iframe>沒有設定identity-credentials-getPermissions-Policy 來允許使用getUserInfo(),或者 FedCM API 被頂層文件上的策略全域性停用,則丟擲此異常。
描述
當呼叫 getUserInfo() 時,只有在以下兩個條件都滿足時,瀏覽器才會向指定的 IdP 的 帳戶列表端點發出請求以獲取使用者資訊
- 使用者已透過 FedCM 在同一瀏覽器例項中登入到 RP,且資料未被清除。
- 使用者已在同一瀏覽器例項中登入到 IdP。
getUserInfo() 必須從嵌入的 <iframe> 中呼叫,並且嵌入站點的原點必須與 IdP 的 configURL 匹配。此外,嵌入的 HTML 必須透過 identity-credentials-get Permissions-Policy 明確允許其使用。
<iframe
src="https://idp.example/signin"
allow="identity-credentials-get"></iframe>
示例
基本 IdentityProvider.getUserInfo() 用法
以下示例演示瞭如何使用 IdentityProvider.getUserInfo() 方法從特定 IdP 返回之前登入過的使用者的資訊。
// Iframe displaying a page from the https://idp.example origin
const userInfo = await IdentityProvider.getUserInfo({
configURL: "https://idp.example/fedcm.json",
clientId: "client1234",
});
// IdentityProvider.getUserInfo() returns an array of user information.
if (userInfo.length > 0) {
// Returning accounts should be first, so the first account received
// is guaranteed to be a returning account
const name = userInfo[0].name;
const givenName = userInfo[0].given_name;
const displayName = givenName || name;
const picture = userInfo[0].picture;
const email = userInfo[0].email;
// …
// Render the personalized sign-in button using the information above
}
規範
| 規範 |
|---|
| Federated Credential Management API # dom-identityprovider-getuserinfo |
瀏覽器相容性
載入中…
另見
- Federated Credential Management API on privacysandbox.google.com (2023)