身份绑定
identities、绑定码与 bind
路径未版本化
最后更新:2026-10-25
身份绑定
GET /api/identities
认证:是。班级:否。用途:查询自己绑定的平台。
{
"ok": true,
"data": [
{
"platform": "wechat_mini",
"platformName": "微信小程序",
"uid": "oX7abc12…",
"nickname": null,
"boundAt": "2026-10-20 10:12:00"
}
]
}
platform 取值见 /api/platforms;uid 只返回前 8 位,超出部分以省略号代替。
POST /api/identities/linkcode
认证:是。班级:否。用途:生成 6 位数字绑定码,供另一个平台/设备绑定同一账号。
{
"ok": true,
"data": {
"code": "042317",
"expiresIn": 300,
"hint": "在另一个端填入这个码,就能绑定到当前账号"
}
}
- 默认有效期 5 分钟(可用环境变量
LINK_CODE_TTL_MS调整,0表示立即过期);一次性使用,使用后失效。 - 同一个人再次生成会先撤销之前的码,避免多个有效码同时存在。
- 码存在进程内存中,服务重启或换实例后失效。
GET /api/identities/linkcode/:code
认证:是。班级:否。用途:查询绑定码是否仍有效,不会消耗它。
{ "ok": true, "data": { "valid": true, "mine": true } }
mine 表示这个码当前是否属于调用者;过期/不存在时 valid=false, mine=false。
POST /api/identities/bind
认证:否(绑定码本身是凭证)。班级:否。用途:另一个端用绑定码绑定平台身份,绑定成功后直接获得访问令牌。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
platform | string | 是 | 平台 id,必须在平台注册表里,且不能是 web |
uid | string | 是 | 该平台内的用户标识 |
code | string | 是 | 6 位绑定码 |
nickname | string | 否 | 该平台昵称 |
avatar | string | 否 | 该平台头像地址 |
{
"ok": true,
"data": {
"bound": true,
"platform": "wechat_mini",
"platformName": "微信小程序",
"user": { "id": 12, "username": "20260001", "name": "示例同学" },
"token": "<base64url-payload>.<base64url-signature>",
"expiresIn": 2592000
}
}
- 同一来源 IP 10 分钟内最多 8 次失败;超限返回 400,成功绑定会清零。
- 绑定码错误或过期返回 401,并提示还可以尝试的次数;码被成功取走后立即失效,绑定冲突不会退回码。
- 该平台身份已经属于别人、或该学号已绑定过同平台的其他账号时返回 409;更换绑定需要管理员处理。