跳到主要内容

功能说明​

账户密码登录接口,用于 账号/手机号/邮箱 + 密码 登录。

其中 account、phone、email 至少一个非空;多传时按 account → phone → email 选择,不会依次尝试。设备身份与兼容规则见 设备登录规则。

请求说明​

请求鉴权:该接口为免登录接口,仅需携带 appkey 请求头;Authorization 不需要。登录成功后会在返回值中下发 authorization,供后续需要鉴权的接口使用。

请求类型:POST

请求限频:100次/秒

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

Content-Type:application/json

请求参数​

参数数据类型是否必填参数说明
accountstring否账号;登录只校验身份至少一个非空,账号注册要求 6–20 位 ASCII 字母/数字
phonestring否手机号
emailstring否邮箱地址
passwordstring是账号密码(明文)
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 字符,无控制字符

设备字段放在顶层。先使用 SDK 的 getDeviceId 获取实际连接标识;兼容期只有两个身份键同时不传才走旧登录,partial(仅传一项)、空值、null、错误类型均拒绝。详见 兼容期与重新登录。

password 使用规则​

  • 客户端传 明文密码(例如 123456),服务端会执行 SHA1(password)(hex 小写)后与数据库中的 LoginPass 比对。
  • 不要在客户端先对 password 做 md5/sha1 再传,否则服务端会再次 SHA1(),导致校验不通过。

示例:SHA1("123456") = 7c4a8d09ca3762af61e59520943dc26494f8941b(仅用于理解服务端校验方式;请求参数仍传明文 123456)。

请求示例​

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

{
"account":"username",
"password":"<用户输入的密码>",
"device_id":"sdk-device-demo",
"platform":"web"
}

也可以使用 curl 调用:

curl -X POST 'https://$api/jim/login' \
-H 'appkey: <你的appkey>' \
-H 'Content-Type: application/json' \
-d '{"account":"username","password":"<用户输入的密码>","device_id":"sdk-device-demo","platform":"web"}'

JS fetch 示例:

await fetch("https://$api/jim/login", {
method: "POST",
headers: {
appkey: "<你的appkey>",
"Content-Type": "application/json",
},
body: JSON.stringify({
account: "username",
password: "<用户输入的密码>",
device_id: "<SDK getDeviceId 返回值>",
platform: "web",
}),
});

响应示例​

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

常见错误码​

成功字段类型、ds1... 用户设备会话、同设备重新登录替换会话及完整 17600–17608 错误处理见 设备登录规则。authorization 与 im_token 不可互换。

code含义典型触发条件
17001缺少 appkey请求头未携带 appkey(在服务端鉴权中间件校验)
17002appkey 不存在/应用不存在appkey 对应应用不存在,或服务端无法获取 IM SDK 实例
17003请求参数非法JSON 解析失败;或 password 为空;或 account/phone/email 同时为空
17012用户不存在按 account/phone/email 未找到用户
17013密码错误服务端校验 SHA1(password) 与用户 LoginPass 不一致
17004内部服务超时/调用失败服务端调用 IM Server 注册/换取 token 失败(网络/超时等)