从 Chrome 128 开始,Multi-IdP API 将在桌面设备上开始源试用,而按钮模式 API 和延续软件包将在 Android 设备上开始源试用。借助多 IdP 功能,开发者可以在单个 get() 调用中指定多个受支持的身份提供方组成的数组。按钮模式 API 添加了新的界面。借助按钮模式 API,身份提供方即使在用户调用 API 时没有有效的 IdP 会话,也可以使用 FedCM API。延续软件包包含 Continuation API 和 Parameters API,可实现涉及 IdP 提供的权限对话框的 OAuth 授权流程式体验。该软件包还包含其他更改,例如 Fields API、多个 configURL 和自定义账号标签。
源试用:Multi IdP API
借助此功能,用户可以从一组受支持的身份提供方 (IdP) 中选择一个账号,而 RP 则可以提高登录和注册率。如果用户已登录多个 IdP,系统会提示用户使用其中一个 IdP 登录 RP。
系统会根据用户的现有账号及其关联的时间戳来确定 IdP 的优先级。
- 如果用户之前已使用特定 IdP 登录过 RP(即,他们拥有“回访账号”),这些 IdP 将首先列出。
- 在返回的账号中,IdP 会按其最近一次使用的的时间戳进一步排序,最近一次使用的 IdP 会显示在列表顶部。在某些情况下,Chrome 可能没有回访账号的时间戳数据。这可能是因为用户在 FedCM 中实现时间戳日志之前就已登录。这些账号列在具有时间戳的账号下方。
- 如果用户没有任何与任何 IdP 关联的回访账号,则系统会遵循 RP 提供的顺序。
如果开发者提出请求,并且只有一个返回的账号,FedCM 允许自动重新验证身份。对于多 IdP,如果多个 IdP 存在返回的账号,系统不会自动重新验证用户身份。必须有返回的账号才能进行自动重新身份验证。 仅当浏览器明确识别出账号时,才会启动自动重新身份验证。这意味着,用户之前必须已在此 RP 上使用 FedCM 登录过此特定账号。
如果用户的 登录状态针对某个 IdP 设置为“已退出登录”,则调用 FedCM 不会提取该 IdP 的账号。同样,如果用户在所有可用的 IdP 中都处于已退出状态,则在 widget 模式下不会自动显示 FedCM 登录提示。
如果浏览器中保存的某个 IdP 的登录状态为“已登录”,但提取请求未返回该 IdP 的任何账号(例如,用户会话已过期,但浏览器尚未更新登录状态),则系统会针对该 IdP 显示不匹配界面,建议用户使用不匹配的 IdP 登录。
如需详细了解登录状态,请参阅文档。 如需了解更多实现细节,请参阅开发者指南。
源试用:Multi IdP API
您可以作为用户在演示 RP 上试用 Multi IdP API,也可以作为开发者使用 Chrome 128 或更高版本试用。
以用户身份试用
以用户的身份亲自试用一下。请确保:
- Chrome 未配置为阻止网页上的第三方登录提示:
chrome://settings/content/federatedIdentityApi。 - 您已登录多个演示 IdP。按照演示页面上的说明操作。
请注意,若要在来源未注册来源试用的网站上试用 Multi-IdP,您需要在 chrome://flags/#fedcm-multi-idp 下启用相应的功能标志。
以开发者的身份试用
如果登录提供方在 RP 上嵌入了 JavaScript SDK(推荐),则启用多个 IdP 的 navigator.credentials.get() 调用可由提供方实现,RP 开发者无需更改其代码。否则,RP 需要自行调用 FedCM API。
如需在 RP 上测试多个 IdP,请按如下方式指定受支持的提供方数组:
try {
const cred = await navigator.credentials.get({
identity: {
providers: [
{
configUrl: "https://idp1.example/foo.json", // first IdP
clientId: "123",
},
{
configUrl: "https://idp2.example/bar.json", // second IdP
clientId: "456",
}
]
}
});
const token = cred.token;
const currentConfigFileUrl = cred.configURL;
if (cred.configURL === 'https://idp1.example/foo.json') {
// handle the token for idp1.example
} else if (cred.configURL === 'https://idp2.example/bar.json') {
// handle the token for idp2.example
}
} catch (error) {
console.error("Error during credential retrieval:", error);
}
生成的对象中的 configURL 属性存储用户进行身份验证时所用的 IdP 的配置文件网址。RP 可以确定如何处理生成的 token,因为该值因 IdP 而异。
参与源试用
通过源试用,您可以试用新功能,并就其可用性、实用性和有效性提供反馈。如需了解详情,请参阅开始使用源试用。
您可以注册从 Chrome 128 开始的源试用,尝试使用多 IdP 功能。
如需试用多 IdP,RP 可以注册其来源并运行第一方来源试用。IdP 还可以注册第三方来源试用版,并让其所有使用 JavaScript SDK 的 RP 都能使用多 IdP 功能。
参与源试用的步骤:
- 前往 Multi IdP API 源试用注册页面。 2. 点击注册按钮,然后填写表单以申请令牌。
- 如需注册第一方源试用,请在“Web 源”字段中输入 RP 的源。对于第三方源站试用,请输入 IdP 的 JavaScript SDK 的源站,然后选中“第三方匹配”框。
- 点击提交。
- 在 RP 页面上提供已签发的令牌:
- 对于第一方源试用参与者:
- 作为
<head>中的元标记:<meta http-equiv="origin-trial" content="TOKEN_GOES_HERE">- 作为 HTTP 标头:Origin-Trial: TOKEN_GOES_HERE - 对于第三方源试用参与者: - 以程序化方式提供令牌。
- 对于第一方源试用参与者:
- 作为
适用于 Android 版 Chrome 的按钮模式 API
从 Chrome 版本 128 开始,Button Mode API 的源试用将在 Android 版 Chrome 上开始,此前已在桌面设备上进行过初始试用。 借助按钮模式 API,身份提供方可以使用 FedCM API,即使其用户在 API 调用时已从 IdP 中退出登录也是如此。登录流程由用户手势启动,这样可以更好地反映用户意图。
在 Chrome 128 中,我们推出了一项新功能,允许 IdP 直接在客户端元数据端点响应中包含 RP 的官方徽标图标。这可增强按钮模式下移动设备上的界面。
与配置文件中的 IdP 品牌信息类似,RP 的图标可以在 IdP 端进行配置,并以 client_metadata_endpoint 响应的形式返回,如下所示:
"privacy_policy_url": "https://rp.example/privacy_policy.html",
"terms_of_service_url": "https://rp.example/terms_of_service.html",
"icons": [{
"url": "https://idp.example/rp-icon.ico",
"size": 40
}]
如需详细了解图标支持,请参阅开发者文档。
如果用户尚未登录,FedCM 会提示用户使用 IdP 通过 Chrome 自定义标签页 (CCT) 提供的 login_url 登录 IdP。
如果用户使用之前用过的账号重新进行身份验证,系统不会显示披露声明界面。
如需注册参加源试用,请参阅桌面设备上的按钮模式 API 相关说明。如果您已在桌面设备上注册源试用,则从 Chrome 128 开始,您将可以在 Android 设备上的 Chrome 中自动使用该功能。
适用于 Android 版 Chrome 的 Continuation API 软件包
从 Chrome 版本 128 开始,Continuation API 软件包将作为源试用的一部分在 Android 版 Chrome 中提供,此前已在桌面设备上进行过初始试用。该软件包包含多项 FedCM 功能,包括延续 API、参数 API、字段 API、多个 config网址 和自定义账号标签。
Continuation API 可实现多步登录流程。Parameters API 允许向 IdP 传递其他参数。借助 Fields API,RP 可以请求在 FedCM 对话框中显示特定账号属性的披露界面。此外,Multiple configURL 支持 IdP 的多个配置文件,而自定义账号标签允许 IdP 注释账号,以便 RP 可以按这些标签过滤账号。
如需详细了解 Continuation API 软件包,请参阅桌面设备上的 Continuation API 软件包这篇博文。 如需注册初始版本试用,请按照这些说明操作。如果您已在桌面设备上注册源试用,则从 Chrome 128 开始,您将可以在 Android 设备上的 Chrome 中自动使用这些功能。
参与互动并分享反馈
如果您有任何反馈或遇到任何问题,可以提交问题。我们会及时更新规范的 FedCM 开发者指南以及累积的更新日志页面。