身份绑定

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

认证:否(绑定码本身是凭证)。班级:否。用途:另一个端用绑定码绑定平台身份,绑定成功后直接获得访问令牌。

参数类型必填说明
platformstring是平台 id,必须在平台注册表里,且不能是 web
uidstring是该平台内的用户标识
codestring是6 位绑定码
nicknamestring否该平台昵称
avatarstring否该平台头像地址
{
  "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;更换绑定需要管理员处理。
若本文与源码不一致,以源码和实际响应为准;发现不一致时请更新文档,而不是修改 API 行为。 学生使用指南 · 返回 API 总览