功能说明
删除当前应用、当前用户的其他设备,撤销目标业务会话并执行设备级 IM 封禁/踢出与核查。这不是普通退出登录接口,也不是 HTTP DELETE。
请求说明
请求鉴权:需要
appkey和有效的新用户设备会话Authorization原文,不加Bearer。旧 token、API Key、内部服务凭证均不可用于设备管理。
请求类型:
POST
请求地址:https://请求域名/jim/devices/del
Content-Type:
application/json
请求参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| device_id | string | 是 | 目标设备 ID,1–128 个 Unicode 字符,无控制字符、无首尾空白;与登录使用的 SDK ID 一致 |
仅删除本人在当前应用的设备,其他用户的同名设备不受影响。当前 IM 撤销适配器拒绝含逗号的目标 ID,这类请求不能保证完成。UI 根据 设备列表 的 is_current_device 禁用本机删除;服务端也拒绝删除当前设备。
请求示例
POST /jim/devices/del HTTP/1.1
appkey: <应用标识>
Authorization: <用户设备会话凭证原文>
Content-Type: application/json
{"device_id":"other-sdk-device-demo"}
响应示例
确认完成:
{"code":0,"msg":"success","data":{"operation_id":"<不透明操作ID>","banned_until":1793751000000}}
operation_id 为 string,banned_until 为 int64 Unix 毫秒。首次事务提交即撤销目标业务会话、隐藏设备记录并固定十分钟截止。只有 IM 设备封禁覆盖该截止时间,且在截止前正向核查目标设备离线,才确认完成返回 0;此前已完成的同一操作可幂等返回 0。kick 接口应答成功本身不代表已完成。
已受理但 IM 未确认与重试
例如服务端未开启 IM 设备封禁集成时,可能返回:
{
"code":17606,
"msg":"IM device adapter not implemented: device IM ban/kick integration disabled",
"data":{"operation_id":"<不透明操作ID>","banned_until":1793751000000}
}
这只是其中一种真实错误形状,其他故障的 msg 不同,不要根据文字判断结果。删除没有独立 pending 成功结构、没有 pending 字段或 17609 码;17006 仅用于 QR 等待确认。
17606且非空 operation_id 表示任务已提交/复用但 IM 未确认,可提示“业务会话已撤销,IM 下线待确认”,不能显示删除成功。服务端每次撤销处理使用约 5 秒超时上下文,超时也不是成功。17600等存储异常即使带操作 ID,也可能是生成 ID 后事务提交失败,只能提示“结果未确认”并重试核对,不能仅凭 ID 宣称已撤销。- 创建任务前的错误可能带
{"operation_id":"","banned_until":0};中间件拒绝时可能没有 data 或 data 为 null。错误码与 data 必须结合处理。 - 网络失败/响应丢失,仍向同一路径提交相同 device_id 退避重试;没有按 operation_id 查询状态的公开路由。同一撤销周期复用操作 ID 和固定截止时间,不重置十分钟,已完成重试返回 0。
- 设备从列表消失只说明不再是 active,不能证明 IM 完成。服务端 worker 约每 15 秒扫描到期重试任务,失败通常安排约 60 秒后重试;前端不要高频轮询。
- 未确认就超过截止时间,设备仍为 revoking,继续拒绝新业务登录,不再向 IM ban/kick、不自动成功,需要运维处理;倒计时结束也不能显示完成。
- 正常完成后,截止前同账号/设备登录返回
17607;截止后可重新登录创建新会话,旧业务凭证不会复活。原有永久或更长 IM 封禁不会被自动解除,也不承诺十分钟后旧 IM token 永久失效。
错误码与集成边界
17601 目标参数错误,17602 本人范围无此设备,17603 禁止删除本机,17604 设备会话失效/凭证类型不允许,17605 需升级使用设备会话,17606 IM 未确认,17600 结果未确认。鉴权可能先返回 17005;完整 envelope、17607 的 banned_until/retry_after_seconds 形状见 设备登录规则。
服务端 device_im_ban_enabled 缺省为 false,关闭时仍先持久化业务撤销,再报 IM 分支错误;在线列表不受此开关控制。部署方需接入 IM 管理 API 并验收查询/登录失败关闭、封禁并发不缩短、异步执行与缓存一致性、延迟 kick 不误伤新会话等。本文描述代码协议,不代表真实部署验收完成。客户端不持有 IM 管理密钥、不直连管理 API。