PublicKeyCredential: toJSON() 方法
PublicKeyCredential
接口的 toJSON()
方法返回 PublicKeyCredential
的 JSON 类型表示。
返回对象的属性取决于凭据是通过 navigator.credentials.create()
返回的,还是通过 navigator.credentials.get()
返回的。前者是在 创建密钥对并注册用户 时返回的,后者是在 验证用户 时返回的。
当 Web 应用程序代码调用 JSON.stringify()
来序列化 PublicKeyCredential
以便在注册或验证用户时将其发送到依赖方服务器时,此方法会自动调用。它不打算在 Web 应用程序代码中直接调用。
语法
toJSON()
参数
无。
返回值
PublicKeyCredential
对象的 JSON 类型表示。
包含的属性取决于凭据是通过注册时的 navigator.credentials.create()
返回的,还是通过验证用户时的 navigator.credentials.get()
返回的。包含的属性的值和类型与 PublicKeyCredential
相同,只是 base64url 编码字符串用于代替缓冲区属性。
对象的属性为
id
-
由
PublicKeyCredential.id
返回的值。 rawId
-
PublicKeyCredential.rawId
的 base64url 编码版本。 authenticatorAttachment
可选type
-
字符串
"public-key"
。 clientExtensionResults
-
包含由
PublicKeyCredential.getClientExtensionResults()
返回的值的 base64url 编码版本的数组。 response
-
响应属性对象取决于凭据是在注册操作还是验证操作后返回的。
- 注册新用户时,
response
将是AuthenticatorAttestationResponse
的 JSON 类型表示,其中缓冲区值已被 base64url 编码。 - 验证用户时,返回值将是
AuthenticatorAssertionResponse
的 JSON 类型表示版本,其中缓冲区值已被 base64url 编码。
- 注册新用户时,
示例
注册新用户时,依赖方服务器会向 Web 应用程序提供有关预期凭据的信息。Web 应用程序使用接收到的信息(下面的 createCredentialOptions
)调用 navigator.credentials.create()
,该信息返回一个用新凭据(PublicKeyCredential
)实现的承诺。
const newCredentialInfo = await navigator.credentials.create({
createCredentialOptions,
});
然后,Web 应用程序使用 JSON.stringify()
(反过来调用 toJSON()
)序列化返回的凭据,并将其发布回服务器。
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 的浏览器中加载。