功能说明
账户密码登录接口,用于 账号/手机号/邮箱 + 密码 登录。
其中 account、phone、email 至少一个非空;多传时按 account → phone → email 选择,不会依次尝试。设备身份与兼容规则见 设备登录规则。
请求说明
请求鉴权:该接口为免登录接口,仅需携带
appkey请求头;Authorization不需要。登录成功后会在返回值中下发authorization,供后续需要鉴权的接口使用。
请求类型:
POST
请求限频:
100次/秒
请求地址:https://请求域名/jim/login
Content-Type:
application/json
请求参数
| 参数 | 数据类型 | 是否必填 | 参数说明 | |
|---|---|---|---|---|
| account | string | 否 | 账号;登录只校验身份至少一个非空,账号注册要求 6–20 位 ASCII 字母/数字 | |
| phone | string | 否 | 手机号 | |
| string | 否 | 邮箱地址 | ||
| password | string | 是 | 账号密码(明文) | |
| device_id | string | 新客户端必填 | SDK 设备 ID,1–128 个 Unicode 字符,无控制字符、无首尾空白 | |
| platform | string | 与 device_id 成对 | ios、android、web、windows、macos、linux,精确小写 | |
| device_name | string | 否 | 最多 128 字符,无控制字符 | |
| os_version | string | 否 | 最多 64 字符,无控制字符 | |
| app_version | string | 否 | 最多 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(在服务端鉴权中间件校验) |
| 17002 | appkey 不存在/应用不存在 | appkey 对应应用不存在,或服务端无法获取 IM SDK 实例 |
| 17003 | 请求参数非法 | JSON 解析失败;或 password 为空;或 account/phone/email 同时为空 |
| 17012 | 用户不存在 | 按 account/phone/email 未找到用户 |
| 17013 | 密码错误 | 服务端校验 SHA1(password) 与用户 LoginPass 不一致 |
| 17004 | 内部服务超时/调用失败 | 服务端调用 IM Server 注册/换取 token 失败(网络/超时等) |