环信无需对方同意直接添加好友

一、预期功能

环信web版(或h5版)实现添加好友功能,需直接添加好友而不用确认通过,能够实现直接添加好友然后开始聊天。

二、主要思路

查询了环信官方给出的开发文档发现不支持这种操作,但在环信控制台界面,管理员可以直接让两个用户建立好友关系,因此考虑使用环信已有接口实现。

研究发现添加好友的接口要通过Bearer验证,也就是说要在登陆成功时获取到通过验证的token信息,然后就可以拿着token发请求将两个用户建立好友关系。

graph LR
模拟登陆-->获取到token
获取到token-->建立好友关系
建立好友关系-->开始聊天

经过测试 已经添加为好友的两个用户重复添加不会报错

三、代码实现

以下代码中需要用到的参数包含:

  • 环信控制台登陆用户名
  • 环信控制台登陆密码
  • Orgname
  • appname
  • 当前环信用户用户名
  • 待添加环信用户用户名

Orgnameappname可以在环信控制台->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();
}

END

发布了146 篇原创文章 · 获赞 53 · 访问量 25万+

猜你喜欢

转载自blog.csdn.net/momDIY/article/details/102467142