Skip to content

全量获取群成员用户 ID(带版本) ​

1. 接口定位 ​

  • 接口名称: 全量获取群成员用户 ID(带版本)
  • 所属域: group
  • 业务目标: 获取指定群的全量成员 userID 集合,并返回版本与哈希比对结果,供客户端做全量同步

2. 请求定义 ​

  • Method: POST
  • Path: /group/get_full_group_member_user_ids
  • Content-Type: 推荐 application/json
  • operationID: 必填,请通过 Header operationID 传入
  • 鉴权: 必填,需要通过 Header token 传入有效令牌
  • 幂等性: 幂等(只读操作)

3. 请求参数 ​

Header 参数 ​

字段必填类型说明
operationID是string链路追踪 ID
token是string登录令牌

Body 参数 ​

字段必填类型说明
groupID是string群组 ID
idHash否string客户端当前成员 userID 集合哈希,用于服务端快速判断是否一致

4. 响应结构 ​

通用响应包裹 ​

字段类型说明
errCodeint错误码,0 表示成功
errMsgstring错误简述
errDltstring错误详情
dataany业务数据

data 字段结构 ​

字段类型说明
versionuint64当前群成员版本号
versionIDstring版本记录 ID
equalbool服务端集合哈希是否与请求 idHash 一致
userIDsarray[string]全量群成员 userID 列表;当 equal=true 时可能为空

5. 业务规则 ​

  • 调用方需满足“应用管理员”或“在群内成员”之一。
  • 服务端会计算群成员 userID 集合哈希并与 idHash 对比。
  • 当 idHash 命中(equal=true)时,服务端可不返回 userIDs(节省带宽)。

6. 错误码与失败场景 ​

错误码场景典型报错
1002非群成员且非管理员NoPermissionError
500服务内部错误ServerInternalError

7. 示例 ​

fetch 请求示例 ​

javascript
fetch("http://localhost:10002/group/get_full_group_member_user_ids", {
  method: "POST",
  headers: {
    operationID: "b8f5b8de-9326-4d0a-b221-7a6a6f4db1d3",
    token: "<your-token>",
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    groupID: "group_001",
    idHash: "e6f8e13f3f5f7d10",
  }),
})
  .then((res) => res.json())
  .then((data) => console.log(data));

请求示例(JSON) ​

json
{
  "groupID": "group_001",
  "idHash": "e6f8e13f3f5f7d10"
}

成功响应示例 ​

json
{
  "errCode": 0,
  "errMsg": "",
  "errDlt": "",
  "data": {
    "version": 128,
    "versionID": "66547a10f0d5ab0f51711234",
    "equal": false,
    "userIDs": ["u_1001", "u_1002", "u_admin"]
  }
}

8. 时序流程 ​

  1. 读取群成员 userID 列表并校验调用者权限(管理员或群成员)。
  2. 查询群成员版本信息并计算服务端 idHash。
  3. 与请求 idHash 比对,回填 equal,必要时返回全量 userIDs。

9. 变更记录 ​

  • 2026-06-20: 首版补充文档发布。