PublicKeyCredential:signalCurrentUserDetails() 靜態方法

可用性有限

此特性不是基線特性,因為它在一些最廣泛使用的瀏覽器中不起作用。

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

PublicKeyCredential 介面的 signalCurrentUserDetails() 靜態方法會通知認證器,某個使用者已在 信譽方 (RP) 伺服器上更新了其使用者名稱和/或顯示名稱。

這允許認證器更新使用者賬戶的詳細資訊,以確保它們與 RP 所持有的資訊保持同步。此方法僅應在當前使用者已透過身份驗證時使用 — 登入後,或者當他們在 RP Web 應用上更改與其憑證關聯的元資料時使用。

語法

js
signalCurrentUserDetails(options)

引數

options

一個代表已更新使用者資訊的物件,其中包含以下屬性:

displayName

一個代表已更新使用者 displayName 的字串。

name

一個代表已更新使用者 name 的字串。

rpId

一個字串,表示傳送訊號的 RP 的 ID

userId

一個 base64url 編碼的字串,代表了憑證關聯的 使用者 id

返回值

一個 Promise,解析為 undefined

異常

Promise 會因以下異常而拒絕

SecurityError DOMException

RP 域無效。

TypeError DOMException

credentialId 不是一個有效的 base64url 編碼字串。

描述

使用者認證器中儲存的有關 可發現憑證(例如,passkey)的資訊可能與 RP 伺服器不同步。當用戶在 RP Web 應用上更新其使用者名稱或顯示名稱但未更新認證器時,可能會發生這種情況。

下次他們嘗試使用可發現憑證登入時,憑證仍會以舊的使用者名稱/顯示名稱出現在相關 UI 中,這可能會導致令人困惑的使用者體驗。

為避免此問題,每次使用者更新其使用者賬戶詳細資訊或登入時,RP Web 應用都應呼叫 signalCurrentUserDetails(),告知認證器使用者資訊已更新。認證器如何處理此資訊由其自行決定,但預期它會與其提供的更新同步其使用者資訊。

示例

通知當前使用者詳細資訊

在此示例中,我們呼叫 signalCurrentUserDetail() 方法,並將使用者剛剛在 RP 上編輯的憑證的詳細資訊傳遞給它。因此,認證器應更新其自身的憑證副本,以保持與 RP 的同步。

js
if (PublicKeyCredential.signalCurrentUserDetails) {
  await PublicKeyCredential.signalCurrentUserDetails({
    rpId: "example.com",
    userId: "M2YPl-KGnA8", // base64url-encoded user ID
    name: "a.new.email.address@example.com", // username
    displayName: "Maria Sanchez",
  });
} else {
  // Encourage the user to update their details in the authenticator
}

有關更多程式碼示例,請參閱 developer.chrome.com 上的 使用 Signal API 使 passkey 與伺服器上的憑證保持一致 (2024)。

規範

規範
Web Authentication:訪問公鑰憑證的 API - 第 3 級
# dom-publickeycredential-signalcurrentuserdetails

瀏覽器相容性

另見