PublicKeyCredential:getClientExtensionResults() 方法

Baseline 已广泛支持

此功能已成熟,并可在多种设备和浏览器版本上运行。自 2021 年 9 月起,所有浏览器均已支持此功能。

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

PublicKeyCredential 接口的 getClientExtensionResults() 方法返回一个对象,该对象将凭据创建或身份验证期间请求的扩展的标识符映射到它们被用户代理处理后的结果。

在创建或获取 PublicKeyCredential(分别通过 navigator.credentials.create()navigator.credentials.get())时,可以通过 publicKey 选项的 extensions 属性请求客户端进行“自定义”处理不同的扩展。有关请求不同扩展的更多信息,请参阅 Web 身份验证扩展

注意: getClientExtensionResults() 仅返回由用户代理(客户端)处理的扩展的结果。由身份验证器处理的扩展的结果可以在 身份验证器数据 中找到,该数据可在 AuthenticatorAssertionResponse.authenticatorData 中获取。

语法

js
getClientExtensionResults()

参数

无。

返回值

一个对象,每个条目是扩展的标识符字符串作为键,以及客户端处理扩展的输出作为值。

异常

SecurityError DOMException

RP 域无效。

示例

js
const publicKey = {
  // Here are the extension "inputs"
  extensions: {
    appid: "https://accounts.example.com",
  },
  allowCredentials: {
    id: "fgrt46jfgd...",
    transports: ["usb", "nfc"],
    type: "public-key",
  },
  challenge: new Uint8Array(16) /* from the server */,
};

navigator.credentials
  .get({ publicKey })
  .then((publicKeyCred) => {
    const myResults = publicKeyCred.getClientExtensionResults();
    // myResults will contain the output of processing the "appid" extension
  })
  .catch((err) => {
    console.error(err);
  });

规范

规范
Web Authentication:访问公钥凭证的 API - 第 3 级
# dom-publickeycredential-getclientextensionresults

浏览器兼容性

注意: 扩展是可选的,不同的浏览器可能识别不同的扩展。客户端始终可以忽略处理扩展:如果浏览器不识别给定的扩展,它将直接忽略它。有关哪些浏览器支持哪些扩展的信息,请参阅 Web 身份验证扩展

另见