一、预期功能
环信web版(或h5版)实现添加好友功能,需直接添加好友而不用确认通过,能够实现直接添加好友然后开始聊天。
二、主要思路
查询了环信官方给出的开发文档发现不支持这种操作,但在环信控制台界面,管理员可以直接让两个用户建立好友关系,因此考虑使用环信已有接口实现。
研究发现添加好友的接口要通过Bearer
验证,也就是说要在登陆成功时获取到通过验证的token信息,然后就可以拿着token发请求将两个用户建立好友关系。
graph LR
模拟登陆-->获取到token
获取到token-->建立好友关系
建立好友关系-->开始聊天
经过测试 已经添加为好友的两个用户重复添加不会报错
三、代码实现
以下代码中需要用到的参数包含:
- 环信控制台登陆用户名
- 环信控制台登陆密码
- Orgname
- appname
- 当前环信用户用户名
- 待添加环信用户用户名
Orgname
与appname
可以在环信控制台->IM->我的应用->具体任务详情(点击某一任务可查看)中找到。
具体实现代码如下:
let currentUser = 'admin1' // 当前用户
let anotherUser = 'admin2' // 被添加用户
const getIMOperateToken = e => {
let xhr = new XMLHttpRequest()
let obj = {
grant_type: "password",
password: "", // 环信控制台登陆密码
username: "" // 环信控制台登陆用户名
}
xhr.open("post", `https://a1.easemob.com/management/token?t=${+new Date}`, true)
xhr.onload = () => {
addUser(JSON.parse(xhr.responseText).access_token)
}
xhr.send(JSON.stringify(obj));
}
const addUser = token => {
let xhr = new XMLHttpRequest()
xhr.open("post", `https://a1.easemob.com/1123190718010879/stevendemoapp/users/${currentUser}/contacts/users/${anotherUser}?t=${+new Date}`, true)
xhr.setRequestHeader("Authorization", `Bearer ${token}`)
xhr.onload = () => {
// 判断好友添加成功后可直接开始聊天
}
xhr.send();
}