解读导出的 JSON
上次更新:2026年8月12日
解读导出的 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。
- 导出是某一时刻的快照;之后的授权、撤销或资料修改不会写回已下载的文件。需要最新内容时请重新导出。
返回操作步骤见《导出数据与注销账户》。