公共请求头

参数 说明
LANGUAGE zh-Hans 语言,zh-Hans中文;th泰语,目前就这2种
TENANT-ID 1560744557050159105 租户id
Authorization Bearer 5cd72edd-2864-4410-bbbd-e34e37d1012d 凭证,登录返回的token_type + access_token

统一返回对象

参数 说明
code 状态码
data 返回的数据
msg 提示信息

http状态码

参数 说明
424 token过期

登录

http://h5.348.im/auth/oauth/token?grant_type=password

请求方式
post

请求头

参数 说明
Content-Type application/x-www-form-urlencoded
Authorization Basic YXBwOmFwcA== 身份凭证,登录和刷新token时传对app:appbase64加密后的值;登录后每次调用接口都传登录返回的token

参数

参数 说明
username ttt100 登录名
password YRDq1JJa 密码AES加密,加密模式Mode.CFB,加密keypigxpigxpigxpigx

返回

{
  "access_token": "5cd72edd-2864-4410-bbbd-e34e37d1012d",// token
  "token_type": "Bearer",
  "refresh_token": "9c1c18bb-4e49-4062-adee-e39db2f6d6d3",// token过期,拿这个去更换
  "expires_in": 2591999,// 过期时间秒
  "scope": "server",
  "nick": "ttt100",// 昵称
  "license": "made by pigx",
  "uid": "12125",// uid 客户端大部分都是拿uid做操作
  "user_id": "354160518631557",// user_id 只有在连接到mqtt用user_id,其他地方都是uid
  "clientWid": "app20221121100042070887",// 连接mqtt传入的clientid
  "active": true,
  "avatar": "/avatar/image/PNeHTV_photo_2022-08-20_05-04-12.jpg",// 头像地址
  "client_id": "app",
  "username": "ttt100"// 用户名
}

刷新token

http://h5.348.im/auth/oauth/token?grant_type=refresh_token
请求方式,请求头和登录一样

参数 说明
refresh_token 9c1c18bb-4e49-4062-adee-e39db2f6d6d3 登录返回的refresh_token

获取OSS的token

http://h5.348.im/im/oss/uploadTokenV1

请求方式
get

返回

{
  "code": 0,
  "msg": null,
  "data": {
    "keyId": "STS.NUaXtbsFoB65rYjYU4E182RYJ",// accessKeyId
    "keySecret": "2fbigFXAcoh4woDxVVEWoeJEFVPXRT4iTVzSpzNT7JvS",// accessKeySecret 
    "token": "CAIS5QF1q6Ft5B2yfSjIr5bUE87WnplO9fTecH/bvVVhSb4U3ZfyqDz2IH1PdXdqB+8esvwzmWBX7/8dlqp6T54doIZMwWoovPpt6gqET9frma7ctM4p6vCMHWyUFGSIvqv7aPn4S9XwY+qkb0u++AZ43br9c0fJPTXnS+rr76RqddMKRAK1QCNbDdNNXGtYpdQdKGHaOITGUHeooBKNXRcx5Fcj0Tkjt/rumJbN0HeE0g2qmt1yjp/qP52pY/NrOJpCSNqv1IR0DPGci38OsUYVrPsu0PEUpm6e4cv2BEJK88pixBQ+OnwNGoABAb7l0HgUVn7w17RVSDY1F1NgZhqgYtnvqs7qy5da8wSmejEk8+WUqdktUWq7oAiDNzRf3VeYGNxGoI6Mqhmh9YC0DBlk2UnmEcnVU8SmsHncotg7/YVUZT55dAnMXw/aYnoKzl6+IIGI+Ncn/SCV8Im1W40ZTMQsmG/Ri8msux4=",// securityToken 
    "expiration": "2022-11-21 13:10:13",// token过期时间
    "type": "ali",// oss厂商
    "endpoint": "oss-accelerate",
    "bucketName": "348file",
    "msgBasePath": "im/msg",
    "avatarBasePath": "im/avatar",
    "bucketUrl": "http://348file.oss-accelerate.aliyuncs.com",// 上传后图片访问的前缀
    "endpointUrl": "https://oss-accelerate.aliyuncs.com"// endpoint 
  }
}

客户端直接传图片到阿里云,不经过后台,阿里云文档,sts模式
https://help.aliyun.com/document_detail/100624.html

文档地址

https://dev22.zk1006.com/doc.html

WEB网页地址

http://h5.348.im

获取参数配置

https://dev22.zk1006.com/doc.html#/pigx-upms-biz/%E5%85%AC%E5%85%B1%E5%8F%82%E6%95%B0%E9%85%8D%E7%BD%AE/getConfigUsingGET

{
  "code": 0,
  "msg": null,
  "data": {
    "register": {
      "regType": "USERNAME",
      "regInviteCodeMust": false,
      "regNameMustPhoneNumber": false,
      "regAvatarMust": false
    },
    "findPage": {
      "findBtnShow": true,
      "findPageMode": "DIRECT"
    },
    "wallet": {
      "walletShow": true,
      "rechargeShow": true,
      "withholdShow": true
    },
    "scanItOpen": true,
    "group": {
      "groupInviteNotice": true,
      "removeGroupNotice": false,
      "quitGroupNotice": false,
      "groupCardShow": true,
      "quitGroupBtnShow": true,
      "updateGroupNickOpen": true,
      "groupMemberNumberShow": true,// 是否显示群人数
      "groupQrcodeShow": true,
      "retractTipsGroupFlag": true,
      "groupForbiddenTimeFlag": false,
      "groupReportFlag": true,// 是否显示群投诉按钮
      "friendRemarkFlag": false,
      "groupNoticeShow": true
    },
    "friend": {
      "retractTipsFdFlag": false
    },
    "chatItem": {
      "retractMaxTime": "180",// 撤回最大时间
      "emojiShow": true,// 是否显示表情包按钮
      "sendFileFlag": true,
      "redPackShow": true,
      "audioShow": true,
      "videoShow": true,
      "readShow": true// 是否显示已读
    },
    "ossPrefix": "https://348file.oss-accelerate.aliyuncs.com",// 图片前缀
    "permissions": null
  }
}

需要调的接口

逻辑

  1. 登录,返回clientId,user_id,token等等
  2. 获取IM服务连接节点列表(mqtt连接地址),当前节点连接失败,切换到另外一个节点连接
  3. 根据登录返回的数据,连接到mqtt
  4. 订阅地址 "/mask/pub/" + "user_id",既/mask/pub/1354160518631557qos设置1

mqtt文档

https://www.emqx.io/docs/zh/v5.0/development/client.html

连接mqtt

参数 说明
clientId app20221121100042070887 登录返回的clientId
username 354160518631557|1560744557050159105 user_id + “|” + TENANT-ID
password 5cd72edd-2864-4410-bbbd-e34e37d1012d token

qos设置成1

MQTT消息通知格式

通知类型 说明 操作类型 样例
msg 消息类通知 - {“type”:”info”,”body”:{“c”:”msg样例”,”chatLinkId”:”351636190757061”,”chatMode”:”PRIVATECHAT”,”ct”:”TEXT”,”pastTime”:1669020286426,”localMessageId”:”1669020286000-GOIg9Uhi”},”requestId”:”msg”,”cmd”:”/chat/sendMsg”,”reqType”:”DIRC”}
operNtf 操作类通知 read(已读)
forbidden(禁言)
allForbidden(全员禁言)
unAllForbidden(解除全员禁言)
exitGroup(退群)
kickGroup(踢出群)
setGroupRole<设置群角色>
disbandGroup(解散群)
{“requestId”:”paramNtf”,”body”:{“data”:{“groupId”:”1523486547895638698”,”userId”:”1523486547895638698”},”chatLinkId”:”1563188859851235330”,”oper”:”exitGroup”}}
sysNtf 系统类通知 ONLINE(上小线)
PERMISSION(权限变更)
CONFIG(APP配置)
{“requestId”:”paramNtf”,”body”:{“data”:{“roleId”:”2”,”roleCode”:”GENERAL_USER”},”chatLinkId”:”1563188859851235330”,”oper”:”PERMISSION”}}
paramNtf 下发参数类通知 friendInfo(好友信息变更)
groupInfo(群组信息变更)
groupUserInfo(群成员信息变更)
“requestId”:”paramNtf”,”body”:{“chatLinkId”:1361818835755008,”data”:{“uid”:10622,”groupAvator”:”/avatar/image/2022/0810/23/1/user.png”,”groupId”:1361334723313664,”groupNick”:””,”remarkName”:””,”srcNick”:”wxz201”,”groupRole”:”MEMBER”},”oper”:”groupUserInfo”,”requestId”:”paramNtf”,”tenantId”:1,”userId”:1361818829774848}}
mediaNtf 音视频类通知 call(呼叫)
answer(接听)
refuse(拒绝)
hangupActive(主动挂断)
hangupPassive(被动挂断)
cancelActive(主动取消)
cancelPassive(被动取消)
busyline(忙线)
PC版暂不支持