对接网易云信IM即时通信首先要在网易云信开放平台创建应用,获取到 AppKey与APP_SECRET

详细步骤请参考开放平台:

创建应用 - 控制台 (163.com)

拿到App Key 与 APP_SECRET 之后就可以正式的进行java对接网易云信了

创建网易云信账号代码:

/*** 注册网易云信账号** @param accid String类型 云信账号,必须保证唯一性。以此接口返回结果中的accid为准。* @param mobile String类型 用户手机号码,非中国大陆手机号码需要填写国家代码* @param nickName String类型 用户昵称** @return JSONObject*/public JSONObject createCommunicationUser(String accid, String mobile,String nickName) throws IOException {HttpClient httpClient = HttpClientBuilder.create().build();String url = "https://api.netease.im/nimserver/user/create.action";  /*服务地址: 网易云信 IM 服务端 API 的接入地址*/HttpPost httpPost = new HttpPost(url);String nonce = UUID.randomUUID().toString();           //随机数(最大长度 128 个字符)String curTime = String.valueOf((new Date()).getTime() / 1000L);   //当前 UTC 时间戳String appSecret = "云信平台获取到的 APP_SECRET";/*CheckSum:SHA1(AppSecret + Nonce + CurTime),将该三个参数拼接的字符串进行 SHA1 哈希计算从而生成 16 进制字符(类型为 String,小写)*/String checkSum = CheckSumBuilder.getCheckSum(appSecret, nonce, curTime);/*设置请求头*/httpPost.addHeader("AppKey", YxConfig.APP_KEY);   //云信平台获取的AppKeyhttpPost.addHeader("Nonce", nonce);httpPost.addHeader("CurTime", curTime);httpPost.addHeader("CheckSum", checkSum);httpPost.addHeader("Content-Type", "application/x-www-form-urlencoded;charset=utf-8");List<NameValuePair> nvps = new ArrayList<NameValuePair>();/*请求体*/nvps.add(new BasicNameValuePair("accid", accid));nvps.add(new BasicNameValuePair("mobile", mobile));nvps.add(new BasicNameValuePair("name", nickName));httpPost.setEntity(new UrlEncodedFormEntity(nvps, "utf-8"));HttpResponse response = httpClient.execute(httpPost);JSONObject existJsonObject = JSON.parseObject(EntityUtils.toString(response.getEntity(), "utf-8"));return existJsonObject;}

计算CheckSum的代码如下

import java.security.MessageDigest;public class CheckSumBuilder {// 计算并获取CheckSumpublic static String getCheckSum(String appSecret, String nonce, String curTime) {return encode("sha1", appSecret + nonce + curTime);}// 计算并获取md5值public static String getMD5(String requestBody) {return encode("md5", requestBody);}private static String encode(String algorithm, String value) {if (value == null) {return null;}try {MessageDigest messageDigest= MessageDigest.getInstance(algorithm);messageDigest.update(value.getBytes());return getFormattedText(messageDigest.digest());} catch (Exception e) {throw new RuntimeException(e);}}private static String getFormattedText(byte[] bytes) {int len = bytes.length;StringBuilder buf = new StringBuilder(len * 2);for (int j = 0; j < len; j++) {buf.append(HEX_DIGITS[(bytes[j] >> 4) & 0x0f]);buf.append(HEX_DIGITS[bytes[j] & 0x0f]);}return buf.toString();}private static final char[] HEX_DIGITS = { '0', '1', '2', '3', '4', '5','6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f' };
}

在App用户进行注册的时候调用 createCommunicationUser方法 返回一个JSON,解析该JSON并将返回的accid与token存到数据库中,在客户端需要用户的accid与token。

/*获取到accid使用MD5加密方式*/String accid = Md5Utils.hash(String.valueOf(new Date().getTime()) + "HL" + new Random().nextFloat());JSONObject communicationUser = createCommunicationUser(accid, phone,"用户昵称");/*在json字符串中解析返回的accid与token存到数据库中*//*user为用户的实体类*/user.setAccid(communicationUser.getJSONObject("info").get("accid").toString());user.setImToken(communicationUser.getJSONObject("info").get("token").toString());

MD5Utils:

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;import java.security.MessageDigest;/*** Md5加密方法** @author ruoyi*/
public class Md5Utils
{private static final Logger log = LoggerFactory.getLogger(Md5Utils.class);private static byte[] md5(String s){MessageDigest algorithm;try{algorithm = MessageDigest.getInstance("MD5");algorithm.reset();algorithm.update(s.getBytes("UTF-8"));byte[] messageDigest = algorithm.digest();return messageDigest;}catch (Exception e){log.error("MD5 Error...", e);}return null;}private static final String toHex(byte hash[]){if (hash == null){return null;}StringBuffer buf = new StringBuffer(hash.length * 2);int i;for (i = 0; i < hash.length; i++){if ((hash[i] & 0xff) < 0x10){buf.append("0");}buf.append(Long.toString(hash[i] & 0xff, 16));}return buf.toString();}public static String hash(String s){try{return new String(toHex(md5(s)).getBytes("UTF-8"), "UTF-8");}catch (Exception e){log.error("not supported charset...{}", e);return s;}}
}

更新网易云信token,在用户重新登录时更新token,并将数据库中的token更新

 /*** 更新网易云信token*/public JSONObject updateCommunicationUserToken(String userAccid) throws IOException {HttpClient httpClient = HttpClientBuilder.create().build();String url = "https://api.netease.im/nimserver/user/refreshToken.action";HttpPost httpPost = new HttpPost(url);String nonce = UUID.randomUUID().toString();String curTime = String.valueOf((new Date()).getTime() / 1000L);String appSecret = YxConfig.APP_SECRET;String checkSum = CheckSumBuilder.getCheckSum(appSecret, nonce, curTime);httpPost.addHeader("AppKey", YxConfig.APP_KEY);httpPost.addHeader("Nonce", nonce);httpPost.addHeader("CurTime", curTime);httpPost.addHeader("CheckSum", checkSum);httpPost.addHeader("Content-Type", "application/x-www-form-urlencoded;charset=utf-8");List<NameValuePair> nvps = new ArrayList<NameValuePair>();nvps.add(new BasicNameValuePair("accid", userAccid));httpPost.setEntity(new UrlEncodedFormEntity(nvps, "utf-8"));HttpResponse response = httpClient.execute(httpPost);JSONObject existJsonObject = JSON.parseObject(EntityUtils.toString(response.getEntity(), "utf-8"));return existJsonObject;}

至此java对接网易云信token完成!!!!!

Java对接网易云信IM 即时通讯相关推荐

  1. 网易im即时聊天php怎么接入,网易云信IM即时通讯功能接入方式与流程_如何收费_企业服务汇...

    编者按:很多企业在考虑使用网易云信提供的IM即时通讯功能,对于企业应当如何接入该功能.接入方式和流程是怎样的.应当如何收费等不太清楚.企业服务汇通过评测网易云信IM即时通讯功能来告诉你答案. 网易云信 ...

  2. vue如何对接网易云信IM即时聊天

    vue如何对接网易云信IM即时聊天? 示例:官方Demo跑不通且API看起来太复杂,这里直接提取直接能跑通的代码,拿去即可使用 使用步骤 1.引入库 首先引入网易云信的Web API: 2.全局引入 ...

  3. 网易云信-IM即时通讯 微信小程序端实现

    小程序端的需求,使用网易云信的即时通讯作为咨询沟通的工具. 剥离点对点聊天功能且能独立运行的git项目: https://github.com/GstKishn/IM/ 如解决了你的燃眉之急(开发不易 ...

  4. 网易云信IM即时通讯聊天源码SDK 并发高轻松万人并发稳定不丢消息 后端PHP 前端 安卓Java

    优势:承载用户并发同时在线都在第三方网易云信高并发轻松承载万人并发. 开发语言:后端PHP 前端安卓Java 苹果 OC PC端C# 网易云信 IM UIKit是基于 NIM SDK(网易云信 IM ...

  5. 网易云信IM即时通讯PHP接口开发

    网易云信:https://www.163yun.com 注册地址:https://app.netease.im/regist 登录地址:https://app.netease.im/login 架构设 ...

  6. android 极光 环信,环信、容联云通讯、极光推送和网易云信IM即时通讯功能接入方式_部署方式_企业服务汇...

    编者按:企业在挑选IM即时通讯功能服务商时,对于企业应当如何接入其IM功能.接入方式和部署方式有哪些等问题不太清楚.今天企业服务汇通过评测环信.容联云通讯.极光推送和网易云信这四家服务商来为你详细说明 ...

  7. 接入网易云信IM即时通讯的微信小程序聊天室

    微信小程序开发交流qq群   173683895    承接微信小程序开发.扫码加微信. 接入流程: 初次接触网易云通信IM服务,您可以通过以下产品介绍文档了解我们的产品功能.相关概念.业务限制: 产 ...

  8. 网易云信im即时通讯,php网易云信im即时通讯,tp,demo,即时通讯

    请先配置appKey和appSecret     本demo实现了服务端和web的联调(系统通知) 服务端参考文档:开发者中心 WEB参考文档:开发者中心 目录 1.公共类 Common.php 2. ...

  9. 一款 Java 开源的 Spring Boot 即时通讯 IM 聊天系统

    点击上方蓝色"方志朋",选择"设为星标" 回复"666"获取独家整理的学习资料! 开篇 电商平台最不能缺的就是即时通讯,例如通知类下发,客服 ...

  10. Java基于网易云信实现手机短信验证

    本文只是网易云信开发文档中的一个简单的例子,详情大家可以去看网易云信的开发手册.(后续可能会把这demo应用到web项目的登录中去,到时候会把GitHub链接贴过来) 网易云信网址 首先进入网易云信, ...

最新文章

  1. python默认的一个代码缩进是几个空格_python缩进长度是否统一
  2. 代码: 0x80131500_微软应用商店错误代码“0x80131500”怎么修复?
  3. 在vs code中创建代码片段
  4. 公司要禁止QQ?【我们从协议开始分析】
  5. java多态的好处_java萌新,对象的多态有什么好处?
  6. Python提取.ipynb文件中的Python代码保存为.py文件
  7. Python 基础 —— 文件
  8. 如何获得WPA握手包EWSA破解WPA密码教程[zz]
  9. hack the box(5985 WinRM)
  10. 最值得爸爸妈妈学习的儿童教育书籍推荐
  11. 基于C++实现的选课系统
  12. 代码式动态录入生成个人简历页面html页面前端源码
  13. archlinux 安装xorg
  14. Sentinel-1 SAR数据与精密轨道数据下载
  15. 大学计算机基础方案一,《大学计算机基础》实验实施方案-学生用汇.docx
  16. pytorch 高光谱图像分类
  17. arm oe linux gnueabi 系统,[MDM9X07] ME3610/3630开发环境快速搭建
  18. ATT的SIM卡(GoPhone)连不上4G网络怎么办
  19. 防止你的WP7手机偷跑流量——系统设置篇
  20. 怎样还原台式计算机,台式机如何一键还原呢

热门文章

  1. java 运算规则_java四则运算规则
  2. 前端:移动端和PC端的区别
  3. Xftp的下载和安装(超详细)
  4. 安卓解压html语言,安卓怎么解压7z带密码的文件
  5. 在Unity中通过NGUI UITexture制作动态聊天表情
  6. torch.backends.cudnn.benchmark的用法
  7. PS中的文字叠加纹理
  8. UGUI长按按钮的实现(技能蓄力使用)
  9. 如何使用MATLAB绘制ggplot风格图片(散点图及折线图)
  10. GDOU geek alan 简单java代码:三个和尚身高问题