JIIL Chat 开放平台为开发者提供与 JIIL Chat 生态集成的能力。目前开放 OAuth 授权登录 功能,允许第三方应用获取用户的基本信息(用户名、头像)。
平台支持三种类型的应用:
自动化消息回复与交互,可接入智能客服、通知推送等场景。
即将推出内容推送与广播,适合媒体、公告等场景。
即将推出使用 OAuth 2.0 协议进行授权登录,获取用户基本信息。
已开放登录开发者平台后,点击「创建应用」按钮,填写以下信息即可创建。
| 参数 | 必填 | 说明 |
|---|---|---|
| 应用名称 | 是 | 你的应用的展示名称,用户将在授权页面上看到此名称 |
| 应用类型 | 是 | 选择「授权应用」(目前仅支持此类型) |
| 应用描述 | 否 | 简要描述你的应用功能和用途,帮助管理员审核 |
| 主页地址 | 否 | 你的应用官方网站地址,用户可通过此链接了解更多信息 |
| 回调地址 | 否 | 授权成功后的回调地址,用于接收授权结果(后续版本支持) |
OAuth 授权登录流程如下:
/oauth/init 创建授权会话,引导用户在 JIIL Chat 客户端确认/oauth/poll 获取授权结果username、shadow_user_id 和 sidsid 调用头像接口获取用户头像/oauth/init 必须使用 POST 请求,并携带 developer_token 和 app_id。
POST https://chatdev.jiil.top/oauth/init
Content-Type: application/json
{
"app_id": YOUR_APP_ID,
"developer_token": "你的开发者令牌"
}
成功响应:
{
"code": 200,
"session_id": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
}
错误响应:
| code | 说明 |
|---|---|
| 400 | 缺少 app_id |
| 403 | 缺少 developer_token / 令牌无效 / 应用未审核通过 / 无权使用该 app_id |
| 404 | 应用不存在或已被删除 |
通过自定义协议 jiilchat://oauth?session_id=SESSION_ID 唤起用户本机的 JIIL Chat 客户端进行授权确认。
GET https://chatdev.jiil.top/oauth/poll?session_id=SESSION_ID
响应状态:
| status | 说明 |
|---|---|
| pending | 用户尚未确认或拒绝,继续轮询 |
| confirmed | 用户已确认授权,响应中包含用户信息 |
| rejected | 用户已拒绝授权 |
confirmed 响应示例:
{
"code": 200,
"status": "confirmed",
"username": "用户名",
"shadow_user_id": "s_xxxxxxxxxxxx",
"sid": "加密头像凭证"
}
字段说明:
| 字段 | 说明 |
|---|---|
| username | 用户的 JIIL Chat 用户名 |
| shadow_user_id | 用户在第三方应用中的唯一标识,建议存储在你的服务端 |
| sid | 头像凭证,用于调用头像接口获取用户头像 |
shadow_user_id 用于你的业务标识;sid 仅用于调用头像接口。两者都是不可逆凭证,请妥善保管。
平台提供两个头像获取接口:/logo 通过用户 ID 直接获取头像图片,/kflogo 通过 OAuth 授权得到的 sid 获取头像 JSON 数据。
/logo直接返回 webp 图片二进制,适合放在 <img src> 中使用。
GET https://chatava.jiil.top/logo?id=用户ID
参数:
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| id | int | 是 | 用户 ID |
响应:
image/webp 二进制数据X-Avatar-Gender: unknown(或 male / female)HTML 示例:
<img src="https://chatava.jiil.top/logo?id=123" alt="用户头像">
错误码:
| 错误码 | 说明 |
|---|---|
| 400 | 缺少 id 参数或 id 不是数字 |
| 404 | 用户不存在或头像未设置 |
| 429 | 请求过于频繁 |
| 503 | 头像服务暂不可用 |
/kflogo使用 OAuth 授权得到的 sid 获取头像,返回 JSON 格式,包含 base64 头像数据、头像标识和性别。
GET https://chatava.jiil.top/kflogo?sid=SID
参数:
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| sid | string | 是 | OAuth 授权返回的头像凭证 |
响应:
{
"code": 200,
"timestamp": "2024-01-01T00:00:00.000Z",
"data": {
"avatar_id": "用户头像标识",
"avatar": "base64编码的webp头像",
"gender": "unknown"
}
}
字段说明:
| 字段 | 类型 | 说明 |
|---|---|---|
| avatar_id | string | 用户头像标识,可作为该 sid 的稳定标识存储 |
| avatar | string | base64 编码的 webp 头像,可直接拼接到 data:image/webp;base64, 后显示 |
| gender | string | unknown / male / female |
JavaScript 示例:
const sid = "从 OAuth 轮询获取的 sid";
const res = await fetch('https://chatava.jiil.top/kflogo?sid=' + sid);
const result = await res.json();
if (result.code === 200) {
const { avatar_id, avatar, gender } = result.data;
// 拼接 base64 显示头像
const imgSrc = 'data:image/webp;base64,' + avatar;
}
错误码:
| 错误码 | 说明 |
|---|---|
| 400 | 缺少 sid 参数 |
| 404 | 用户不存在或头像未设置 |
| 429 | 请求过于频繁 |
| 503 | 头像服务暂不可用 |
/logo 获取图片最简单;通过 OAuth 授权接入时用 /kflogo 获取完整信息(含头像标识和性别)。
我们提供了一个完整的在线演示页面,你可以直接体验 JIIL Chat OAuth 授权的全流程:
/oauth/poll 返回的所有信息(username、shadow_user_id、sid)/kflogo 展示头像、avatar_id、gender、timestamp以下是演示页面的核心流程,完整代码请查看 演示页面:
// 1. 创建授权会话
const resp = await fetch('https://chatdev.jiil.top/oauth/init', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ app_id: APP_ID, developer_token: TOKEN }),
});
const { session_id } = await resp.json();
// 2. 唤起 JIIL Chat 客户端
window.location.href = 'jiilchat://oauth?session_id=' + session_id;
// 3. 轮询授权结果
const pollResp = await fetch('https://chatdev.jiil.top/oauth/poll?session_id=' + session_id);
const pollData = await pollResp.json();
// pollData: { username, shadow_user_id, sid }
// 4. 调用 /kflogo 获取头像
const avResp = await fetch('https://chatava.jiil.top/kflogo?sid=' + pollData.sid);
const avData = await avResp.json();
// avData.data: { avatar_id, avatar(base64), gender }