Appearance
登录
扫码登录、验证码、断线重连、退出。
本模块接口全部 POST,请求地址 = {BASE_URL} + 路径。
| 接口 | 用途 | 安全级别 |
|---|---|---|
获取二维码/wx-api/api/login/getQr | 为指定设备取一张登录二维码,并开启一次扫码会话(返回 uuid)。 | 写操作 |
检测二维码/wx-api/api/login/checkQr | 轮询查询当前扫码会话进展(状态机核心);登录成功时同时返回账号身份字段。 | 写操作 |
提交验证码/wx-api/api/login/submitQrCode | 当 checkQr 返回 status:10(企微要求二次验证)时,提交手机端显示的 6 位验证码。 | 写操作 |
断线重连/wx-api/api/login/reconnect | 收到错误码 -11001(企微连接断开)时调用,判断账号是否仍在线并尝试恢复登录。 | 写操作 |
退出登录/wx-api/api/login/logout | 主动退出该设备当前登录的企微账号。 | 高风险 |
安全级别与「实测 日期」标记的含义见接口总览的图例。
扫码登录状态机
一个实例(appid)登录,是一台状态机:由 getQr 取一次会话,checkQr 反复轮询驱动,必要时插入 submitQrCode。
时序:
getQr {appid}—— 返回二维码图(imageBase64)与会话标识uuid(refreshInterval约 600 秒)。只有第一次不带appid:系统自动创建新实例并在响应data.appid返回;之后每次取码都必须带上原appid。一个企微账号只对应一个appid,乱换或绑错有封号风险。- 轮询
checkQr {appid, uuid}(每 2 到 3 秒一次),读data.status。 status == 10(需输入验证码)时调submitQrCode {appid, uuid, code},提交成功后必须再次轮询checkQr,约 6 秒后status由10变为2才算登录成功。status == 2即登录成功;二维码过期会报错误码-12007,需回到第 1 步重新getQr。
登录成功后,nonceKey、deviceUuid、scannerNonce 这些内部凭证业务侧不用保存,也不要外泄;后续业务接口使用保存的 appid。
checkQr 的 status 枚举
| status | 含义 | 下一步 |
|---|---|---|
0 | 未扫码 | 继续轮询 |
1 / 6 | 已扫、待手机端确认 | 继续轮询 |
10 | 需输入验证码 | 调 submitQrCode 后继续轮询 |
2 | 登录成功 | 上线 |
-1 | 登录状态失效 | 重新 getQr |
3 | 登录失败 | 重新 getQr |
4 | 用户取消登录 | 重新 getQr |
uuid 是本次二维码扫码会话的唯一标识(会话票据),由 getQr 生成,checkQr / submitQrCode 复用;二维码过期即会话失效,必须重新 getQr。
代理与断线
getQr 是唯一对外暴露代理参数的接口,代理三选一(region 省份 / socks5 自定义代理 / aid)只在这里传;其余接口不接受代理参数。
只有 -11001 可以自动调用断线重连。-11002 不要自动重连,应置为离线,提示「已在其他设备登录」,由用户决定是否重新扫码,避免和另一台设备互相顶号、反复掉线。code=0 只代表已经开始恢复,还要检查后续业务调用是否再报 -11002 / -2007。重连失败间隔几十秒以上再试,连续失败就重新扫码。见掉线检测与恢复。