解讀匯出的 JSON

上次更新:2026年8月15日

解讀匯出的 JSON

在「隱私」頁完成匯出我的資料並下載後,你會得到名為 swaymoon-passport-export.json 的檔案。本文說明如何閱讀其中的欄位。欄位集合以你下載時實際內容為準;若某段為空陣列或 null,表示當時沒有對應紀錄。

可用文字編輯器或 JSON 檢視器開啟檔案。請勿把完整匯出檔案發給不可信的第三方。

頂層結構

匯出檔案是一個 JSON 物件,常見頂層鍵如下:

欄位含義
accountId你的通行帳戶內部識別(字串)。第三方應用程式通常不會直接拿到這個值;它們使用各自的使用者識別(sub)。
exportedAt匯出產生時間(UTC,ISO-8601,例如 2026-08-06T02:15:30.123Z)。
profile資料檔案(暱稱、簽名、地區等)。
identifiers已綁定的登入識別(電子郵件、手機號碼、使用者名稱、第三方登入等)。
hasPassword是否已設定密碼(布林值)。true 表示可用密碼登入;不包含密碼本身。
authorizedApps曾透過通行帳戶授權過的第三方應用程式。
sessions當時仍登記在案的登入工作階段摘要。
consentHistory同意帳本紀錄(註冊條款、第三方授權等)。

profile:資料檔案

欄位含義
nickname顯示用暱稱
bio個人簽名
region國家或地區
birthday生日(日期字串,未填寫可為 null
gender性別代碼(未填寫可為 null
username使用者名稱(若已設定)
avatarPath頭像在儲存中的路徑識別;不是對外可直接開啟的完整 URL

未填寫的項可能為 null 或空字串。

identifiers:登入識別

陣列,每項大致為:

{ "type": "EMAIL", "value": "you@example.com", "primary": true }
欄位含義
type識別類型,常見值:EMAIL(電子郵件)、PHONE(手機號碼)、USERNAME(使用者名稱)、GOOGLEGITHUB
value該識別的具體值(電子郵件位址、手機號碼等)
primary是否為主要識別。主要識別影響登入預設身分展示,以及授權時是否可選用隱私郵件等能力

同一帳戶可綁定多個識別;只有一個通常為主要識別。

authorizedApps:授權應用

陣列,每項對應一次(或一條歷史)第三方授權紀錄:

欄位含義
clientId應用程式的用戶端 ID
clientName應用程式顯示名稱(登記時的名稱)
firstGrantedAt首次授權時間(時間戳記字串)
relayAlias若授權時選用了隱私郵件,此處為別名本地部分(不含 @privaterelay.swaymoon.com);未使用則為 null
revokedAt若已撤銷授權,為撤銷時間;仍有效時為 null

如何在產品內管理這些授權,見《授權應用》。revokedAt 有值只表示通行帳戶側已撤銷,不表示第三方已刪除此前取得的資料。

sessions:登入工作階段

陣列,每項為工作階段摘要(不含完整工作階段權杖):

欄位含義
createdAt工作階段建立時間
userAgent當時記錄的瀏覽器/用戶端 User-Agent
remoteAddr當時記錄的大致網路位址(用於安全稽核;不一定等於你目前的公用 IP)

可在通行帳戶的安全相關頁面結束不需要的工作階段。匯出只是快照,下載後新建的工作階段不會出現在舊檔案裡。

consentHistory:同意帳本

陣列,記錄你對條款或第三方共享作出的同意相關動作,便於核對「何時、對誰、因何目的」同意過處理:

欄位含義
purpose目的代碼。常見如 terms_of_service(接受使用者協議等)、third_party_sign_in(用通行帳戶登入第三方)
recipient接收方:搖月自身,或第三方的 clientId
dataCategories涉及的資料類別摘要(逗號分隔字串,例如 accountaccount_identifier,profile
crossBorder是否標記為跨境相關(布林值)
action動作類型,常見為 GRANTED(授予)或 REVOKED(撤銷)
recordedAt記帳時間

帳本用於透明度與合規留痕;不等於第三方仍持有有效存取權杖。權杖是否仍可用,還取決於授權是否已撤銷、權杖是否過期等。

閱讀示例

下面是一份虛構、已去識別的結構示意(數值與真實匯出不同):

{
  "accountId": "acc_xxxxxxxx",
  "exportedAt": "2026-08-06T02:15:30.123Z",
  "profile": {
    "nickname": "小月",
    "bio": "你好",
    "region": "CN",
    "birthday": "1990-01-01",
    "gender": "unspecified",
    "username": "xiaoyue",
    "avatarPath": "avatars/acc_xxxxxxxx/…"
  },
  "identifiers": [
    { "type": "EMAIL", "value": "you@example.com", "primary": true },
    { "type": "USERNAME", "value": "xiaoyue", "primary": false }
  ],
  "hasPassword": true,
  "authorizedApps": [
    {
      "clientId": "app_demo",
      "clientName": "示例应用",
      "firstGrantedAt": "2026-07-01T10:00:00Z",
      "relayAlias": "abc123",
      "revokedAt": null
    }
  ],
  "sessions": [
    {
      "createdAt": "2026-08-05T12:00:00Z",
      "userAgent": "Mozilla/5.0 …",
      "remoteAddr": "203.0.113.10"
    }
  ],
  "consentHistory": [
    {
      "purpose": "terms_of_service",
      "recipient": "摇月 Swaymoon",
      "dataCategories": "account",
      "crossBorder": false,
      "action": "GRANTED",
      "recordedAt": "2026-06-01T08:00:00Z"
    }
  ]
}

安全建議

  • 匯出檔案含可識別你身分的資訊,請本機加密儲存或放在安全位置,用完可刪除。
  • 向客服求助時,一般只需說明問題與時間範圍,不要主動附上完整 JSON。
  • 匯出是某一時刻的快照;之後的授權、撤銷或資料修改不會寫回已下載的檔案。需要最新內容時請重新匯出。

返回操作步驟見《匯出資料與註銷帳戶》。