解讀匯出的 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(使用者名稱)、GOOGLE、GITHUB |
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 | 涉及的資料類別摘要(逗號分隔字串,例如 account 或 account_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。
- 匯出是某一時刻的快照;之後的授權、撤銷或資料修改不會寫回已下載的檔案。需要最新內容時請重新匯出。
返回操作步驟見《匯出資料與註銷帳戶》。