← 返回开发者平台

JIIL Chat 开放平台文档

概述 应用类型 创建应用 参数说明 授权流程 头像 API 演示应用

概述

JIIL Chat 开放平台为开发者提供与 JIIL Chat 生态集成的能力。目前开放 OAuth 授权登录 功能,允许第三方应用获取用户的基本信息(用户名、头像)。

应用类型

平台支持三种类型的应用:

🤖

机器人

自动化消息回复与交互,可接入智能客服、通知推送等场景。

即将推出
📢

消息号

内容推送与广播,适合媒体、公告等场景。

即将推出
🔑

授权应用

使用 OAuth 2.0 协议进行授权登录,获取用户基本信息。

已开放

创建应用

登录开发者平台后,点击「创建应用」按钮,填写以下信息即可创建。

参数说明

参数必填说明
应用名称你的应用的展示名称,用户将在授权页面上看到此名称
应用类型选择「授权应用」(目前仅支持此类型)
应用描述简要描述你的应用功能和用途,帮助管理员审核
主页地址你的应用官方网站地址,用户可通过此链接了解更多信息
回调地址授权成功后的回调地址,用于接收授权结果(后续版本支持)

授权流程

OAuth 授权登录流程如下:

  1. 创建应用:在开发者平台创建应用并等待审核通过
  2. 发起授权:调用 /oauth/init 创建授权会话,引导用户在 JIIL Chat 客户端确认
  3. 轮询结果:调用 /oauth/poll 获取授权结果
  4. 获取信息:授权成功后,从轮询响应中取得 usernameshadow_user_idsid
  5. 展示头像:使用 sid 调用头像接口获取用户头像

1. 创建授权会话

/oauth/init 必须使用 POST 请求,并携带 developer_tokenapp_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应用不存在或已被删除

2. 唤起 JIIL Chat 客户端

通过自定义协议 jiilchat://oauth?session_id=SESSION_ID 唤起用户本机的 JIIL Chat 客户端进行授权确认。

3. 轮询授权结果

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 仅用于调用头像接口。两者都是不可逆凭证,请妥善保管。

头像获取 API

平台提供两个头像获取接口:/logo 通过用户 ID 直接获取头像图片,/kflogo 通过 OAuth 授权得到的 sid 获取头像 JSON 数据。

1. 通过用户 ID 获取头像 /logo

直接返回 webp 图片二进制,适合放在 <img src> 中使用。

GET https://chatava.jiil.top/logo?id=用户ID

参数

参数类型必填说明
idint用户 ID

响应

HTML 示例

<img src="https://chatava.jiil.top/logo?id=123" alt="用户头像">

错误码

错误码说明
400缺少 id 参数或 id 不是数字
404用户不存在或头像未设置
429请求过于频繁
503头像服务暂不可用

2. 通过 sid 获取头像 /kflogo

使用 OAuth 授权得到的 sid 获取头像,返回 JSON 格式,包含 base64 头像数据、头像标识和性别。

GET https://chatava.jiil.top/kflogo?sid=SID

参数

参数类型必填说明
sidstringOAuth 授权返回的头像凭证

响应

{
  "code": 200,
  "timestamp": "2024-01-01T00:00:00.000Z",
  "data": {
    "avatar_id": "用户头像标识",
    "avatar": "base64编码的webp头像",
    "gender": "unknown"
  }
}

字段说明

字段类型说明
avatar_idstring用户头像标识,可作为该 sid 的稳定标识存储
avatarstringbase64 编码的 webp 头像,可直接拼接到 data:image/webp;base64, 后显示
genderstringunknown / 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头像服务暂不可用
接口选择建议:已知用户 ID 时直接用 /logo 获取图片最简单;通过 OAuth 授权接入时用 /kflogo 获取完整信息(含头像标识和性别)。

演示应用

我们提供了一个完整的在线演示页面,你可以直接体验 JIIL Chat OAuth 授权的全流程:

🚀 打开完整演示页面

核心代码片段

以下是演示页面的核心流程,完整代码请查看 演示页面

// 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 }
需要帮助? 如有任何问题,请联系 JIILNetTechStudio 获取技术支持。