PublicKeyCredential: toJSON() 方法

安全上下文:此功能仅在安全上下文(HTTPS)中可用,在一些或所有支持的浏览器中可用。

PublicKeyCredential 接口的 toJSON() 方法返回 PublicKeyCredential 的 JSON 类型表示。

返回对象的属性取决于凭据是通过 navigator.credentials.create() 返回的,还是通过 navigator.credentials.get() 返回的。前者是在 创建密钥对并注册用户 时返回的,后者是在 验证用户 时返回的。

当 Web 应用程序代码调用 JSON.stringify() 来序列化 PublicKeyCredential 以便在注册或验证用户时将其发送到依赖方服务器时,此方法会自动调用。它不打算在 Web 应用程序代码中直接调用。

语法

js
toJSON()

参数

无。

返回值

PublicKeyCredential 对象的 JSON 类型表示。

包含的属性取决于凭据是通过注册时的 navigator.credentials.create() 返回的,还是通过验证用户时的 navigator.credentials.get() 返回的。包含的属性的值和类型与 PublicKeyCredential 相同,只是 base64url 编码字符串用于代替缓冲区属性。

对象的属性为

id

PublicKeyCredential.id 返回的值。

rawId

PublicKeyCredential.rawIdbase64url 编码版本。

authenticatorAttachment 可选

PublicKeyCredential.authenticatorAttachment 返回的值。

type

字符串 "public-key"

clientExtensionResults

包含由 PublicKeyCredential.getClientExtensionResults() 返回的值的 base64url 编码版本的数组。

response

响应属性对象取决于凭据是在注册操作还是验证操作后返回的。

示例

注册新用户时,依赖方服务器会向 Web 应用程序提供有关预期凭据的信息。Web 应用程序使用接收到的信息(下面的 createCredentialOptions)调用 navigator.credentials.create(),该信息返回一个用新凭据(PublicKeyCredential)实现的承诺。

js
const newCredentialInfo = await navigator.credentials.create({
  createCredentialOptions,
});

然后,Web 应用程序使用 JSON.stringify()(反过来调用 toJSON())序列化返回的凭据,并将其发布回服务器。

js
const registration_url = "https://example.com/registration";
const apiRegOptsResp = await fetch(registration_url, {
  method: "POST",
  headers: { "Content-Type": "application/json" },
  body: JSON.stringify(newCredentialInfo), //Calls newCredentialInfo.toJSON
});

规范

规范
Web 身份验证:访问公钥凭据的 API - 第 3 级
# dom-publickeycredential-tojson

浏览器兼容性

BCD 表格仅在启用 JavaScript 的浏览器中加载。

参见