PublicKeyCredential: toJSON() 方法

基準線 2025
新推出

自 ⁨2025 年 3 月⁩ 起,此功能可在最新的裝置和瀏覽器版本上使用。此功能可能在舊裝置或瀏覽器上無法正常工作。

安全上下文: 此功能僅在安全上下文(HTTPS)中可用,且支援此功能的瀏覽器數量有限。

PublicKeyCredential 介面的 toJSON() 方法返回一個 PublicKeyCredentialJSON 型別表示

返回物件的屬性取決於憑證是由 navigator.credentials.create()建立金鑰對並註冊使用者時返回的,還是由 navigator.credentials.get()驗證使用者時返回的。

當 Web 應用程式碼呼叫 JSON.stringify() 來序列化 PublicKeyCredential 以便在註冊或驗證使用者時傳送到信賴方伺服器時,此方法會被自動呼叫。它不打算在 Web 應用程式碼中直接呼叫。

語法

js
toJSON()

引數

無。

返回值

PublicKeyCredential 物件的 JSON 型別表示

包含的屬性取決於憑證是在註冊時由 navigator.credentials.create() 返回的,還是在驗證使用者時由 navigator.credentials.get() 返回的。包含屬性的值和型別與 PublicKeyCredential 相同,不同之處在於使用 base64url 編碼的字串來代替 buffer 屬性。

物件屬性包括:

id

PublicKeyCredential.id 返回的值。

rawId

PublicKeyCredential.rawIdbase64url 編碼版本。

authenticatorAttachment 可選

PublicKeyCredential.authenticatorAttachment 返回的值。

type

字串 "public-key"

clientExtensionResults

一個數組,包含 PublicKeyCredential.getClientExtensionResults() 返回的值的 base64url 編碼版本。

response

response 屬性物件取決於憑證是在註冊操作還是認證操作後返回的。

異常

SecurityError DOMException

RP 域無效。

示例

在註冊新使用者時,信賴方伺服器會將有關預期憑證的資訊提供給 Web 應用。Web 應用使用收到的資訊(如下面的 createCredentialOptions)呼叫 navigator.credentials.create(),該呼叫返回一個以新的憑證(一個 PublicKeyCredential)完成的 Promise。

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 Authentication:訪問公鑰憑證的 API - 第 3 級
# dom-publickeycredential-tojson

瀏覽器相容性

另見