NavigatorLogin: setStatus() 方法

安全上下文: 此功能仅在安全上下文(HTTPS)中可用,且支持此功能的浏览器数量有限。

setStatus()NavigatorLogin 接口的一个方法,当从联合身份提供者 (IdP) 的源(origin)调用时,它用于设置联合身份提供者 (IdP) 的登录状态。这里的“登录状态”指的是“当前浏览器中是否有用户登录到 IdP”。当用户登录或注销 IdP 后,IdP 网站应该调用此方法。

浏览器会为每个 IdP 存储此状态;然后 FedCM API 利用此状态来减少对 IdP 的请求次数(因为它不需要在没有用户登录 IdP 的情况下浪费时间请求账户信息)。此方法还可以缓解 潜在的时序攻击

有关 FedCM 登录状态的更多信息,请参阅 使用登录状态 API 更新登录状态

语法

js
setStatus(status)

参数

status

一个字符串,表示要为 IdP 设置的登录状态。可能的值为:

  • "logged-in":该 IdP 至少有一个用户账户已登录。
  • "logged-out":所有 IdP 用户账户当前都已注销。

返回值

一个 Promise,它将以 undefined 解析。

异常

SecurityError DOMException

如果调用域不在一个所有嵌套层级都同源(same-origin)的框架中,则会抛出此错误。无论是在主框架、嵌套在主框架中的 <iframe> 中,还是嵌套在第一个 <iframe> 中多层深度的其他 <iframe> 中调用,所有嵌套层级都必须是同源的,调用才能成功。

示例

js
/* Set logged-in status */
navigator.login.setStatus("logged-in");

/* Set logged-out status */
navigator.login.setStatus("logged-out");

规范

规范
登录状态 API
# dom-navigatorlogin-setstatus

浏览器兼容性

另见