跳到主要内容

功能说明​

待登录端轮询二维码是否已被已登录用户确认,并领取登录结果。新流程需要生成响应中的 poll_secret 和待登录端自己的设备身份。

请求说明​

请求鉴权:免登录,仅需 appkey,无需 Authorization。

请求类型:POST

请求限频:100次/秒

请求地址:https://请求域名/jim/login/qrcode/check

Content-Type:application/json

请求参数​

参数数据类型是否必填参数说明
idstring是生成响应的二维码 ID
poll_secretstring新流程必填生成响应的轮询秘密,仅保留在待登录端
device_idstring新客户端必填SDK 实际连接设备 ID,1–128 个 Unicode 字符,无控制字符、无首尾空白
platformstring与 device_id 成对精确小写 ios、android、web、windows、macos、linux
device_namestring否最多 128 字符,无控制字符
os_versionstring否最多 64 字符,无控制字符
app_versionstring否最多 64 字符,无控制字符

设备字段均在 JSON 顶层,先通过 SDK getDeviceId 获取实际 IM 连接侧的设备标识。完整限制见 设备登录规则。

请求示例​

POST /jim/login/qrcode/check HTTP/1.1
appkey: appkey
Content-Type: application/json

{
"id":"<二维码ID>",
"poll_secret":"<生成时返回的秘密>",
"device_id":"sdk-device-demo",
"platform":"web",
"device_name":"示例浏览器",
"os_version":"示例系统版本",
"app_version":"1.0.0"
}

响应示例​

{
"code":0,
"msg":"success",
"data":{
"user_id":"userid1",
"authorization":"xxxxxxxxx",
"nickname":"user1",
"avatar":"xxxxxxxx",
"status":0,
"im_token":"xxxxxxxxx"
}
}

成功字段类型和凭证用途见 登录响应。首次领取原子绑定设备和新会话,成功后停止轮询、保存业务凭证并用 im_token 连接 IM。

响应码​

响应码说明
17006尚未确认,data 为 null;继续间隔轮询,建议退避/限频,协议未规定固定频率
17007已过期,停止轮询并重新获取
17608记录不存在、秘密不匹配、领取模式冲突或其他无效领取,重新获取
17601 / 17605设备参数不合法 / 需升级使用设备流程
17604绑定的设备会话已撤销或被新登录替换,重新登录
17607历史设备封禁码,当前设备登录逻辑不再产生

例如等待确认:

{"code":17006,"msg":"QR confirmation pending","data":null}

网络失败/响应丢失时,在二维码创建起十分钟内,使用相同 id、poll_secret、device_id 及合法设备参数重试,可取回缓存的同一登录结果,不重复创建会话。领取后更换 device_id/秘密或切换模式不能领取;旧会话被撤销或替换后缓存也不能使其复活。上游 IM 注册等临时错误可在有效期内保留同一参数退避重试,不要随机换 ID。其他 envelope/错误码见 设备登录规则。

旧流程兼容​

兼容期旧端可仅提交 {"id":"<二维码ID>"},同时省略两个设备身份键且不带 poll_secret,领取旧 token、不登记设备;只带秘密不带身份不是新流程。只传一个身份键、空值、null 或错误类型拒绝;严格截止后旧 check 返回 17605。

首次成功领取原子决定 legacy/device 模式,未确认的轮询不锁定模式;领取后不能互换模式。兼容期首次领取前,知道二维码 ID 的旧请求仍可能走旧路径,不能声称 poll_secret 为整个兼容系统提供严格防抢领。严格截止后旧 token 也不能再 扫码确认。