当前位置: 首页 > news >正文

Java对接企业微信实战笔记

Java对接企业微信实战笔记

微信开发文档

有关企业微信的服务商的一些配置参考企业微信创建的服务商配置信息

一 流程图

在这里插入图片描述
只要企业安装应用后,就可以获取到企业的信息

二 创建应用获取suite_ticket

1.创建应用
在这里插入图片描述
微信开发平台得是服务商角色才能进入服务商后台创建一个应用
在创建应用平台里对于回调域名可以先随便写一个,后续在进行修改
2. 回调配置
回调配置 - 接口文档 - 企业微信开发者中心
(1)根据文档实现get接口
参考文档中 3.1 支持Http Get请求验证URL有效性
回调服务需要作出正确的响应才能通过URL验证,具体操作如下:

① 对收到的请求,解析上述的各个参数值(参数值需要做Urldecode处理)
② 根据已有的token,结合第1步获取的参数timestamp, nonce, echostr重新计算签名,然后与参数msg_signature检查是否一致,③ 确认调用者的合法性。计算方法参考:消息体签名检验
④ 解密echostr参数得到消息内容(即msg字段)
在1秒内响应GET请求,响应内容为上一步得到的明文消息内容(不能加引号,不能带bom头,不能带换行符)
http://api.3dept.com/?msg_signature=创建应用生成的token&timestamp=13500001234&nonce=123412323&echostr=ENCRYPT_STR
其他三个参数来自于收到的请求解析所得(参数值需要做Urldecode处理)
解密的密文来创建应用的解密规则,对echostr密文进行解密成明文
创建应用时的数据回调与指令回调URL是内网穿透的地址,拿到该值去应用中进行修改
(2)根据文档实现pos接口
参考文档3.2 支持Http Post请求接收业务数据
与get接口不同的是它返回的是xml,需要解析xml得到加密的明文
解密Encrypt,得到明文的消息结构体
消息体中包括SuitedId,其中InfoType的类型是suite_ticket,那么拿到SuiteTicket的值就是suite_ticket的值了,可以将该值存到库里,也可实时获取
推送suite_ticket

三 获取suite_token

获取suite_token - 接口文档 - 企业微信开发者中心
三个参数中的另外一个参数需要到创建应用中获取,得到的suite_token可以保存到库里
在这里插入图片描述

四 获取企业授权码

获取企业临时授权码
获取企业永久授权码
(一)创建保存企业信息的表
字段包括:corpId , corpName , permanent_code,agentid
agentid:这个字段在消息推送的时候会用到!!!
(二)获得企业授权时推送的企业临时授权码
【这是使用最简单的安装测试按钮,实现企业临时授权码推送】
(三)根据临时授权码获得永久授权码
(四)将企业id和永久授权码存入数据库中
在这里插入图片描述

五 获取企业token

获取企业token
可以从库里查到获取token所需要的入参
在这里插入图片描述

六 获取企业的部门,成员,客户,服务商等信息

获取部门列表
获取部门成员列表
(一)创建成员信息表
字段包括: userId , 部门id , 企业id,企业名称
(二)获得企业token
【这一步可以在获取永久码的时候直接获取到,这一步就可以省掉了】
(三)获得部门
(四)根据部门id,获得成员id,并存入数据库
在这里插入图片描述
在这里插入图片描述

七 前后端系统授权登录

1.配置应用主页,实现移动端登录
前端网页授权登录
A.配置应用主页,获取code,点击应用会给redirectURL的后面拼接code,前端可以从URL解析获得
B.前端页面提供登录按钮,调用后端登录接口
C.提供一个登录接口【通过code获得用户信息,然后校验userId是否在我们系统,从而判断用户是否能够登录】
在应用中需要修改应用主页,且需要把可信用的文件放到前端项目中,可在企业微信应用上进行下载
获取用户信息
在这里插入图片描述
APPID就是应用的suiteID
在这里插入图片描述
调用api接口获取用户的信息

  1. 设置URL登录后端系统
    企业微信web端登录
    在这里插入图片描述
    设置后,应用安装后可以从业务设置出进入程序
    在这里插入图片描述
    调用api获取登录用户的信息

  2. 扫码登录
    可以提供以下三种方式进行扫码登录
    在这里插入图片描述
    A.创建一个服务商的官网页面【一般服务商页面会有三个按钮】
    B.构建安装应用链接:【https://developer.work.weixin.qq.com/document/path/90597】

这里一定要注意,在获取预授权码之后,需要调用一下授权码配置接口

C.构建注册按钮【https://developer.work.weixin.qq.com/document/path/90578】

注册需要上线后才能获得推广包id,根据推广包获得注册码;这里只是做一下代码实现;后面线上了直接改一下推广包id即可

注意:这种注册链接并不属于登录的方式,只是一般服务商网站都会提供这种注册按钮;只是用于推广企业微信,让别人安装企业微信顺带将我们的第三方应用自动安装上而已

D.构建扫码链接【https://developer.work.weixin.qq.com/document/path/91124】

这里不需要通过代码生成,直接拼接即可

E.点击测试登录
在这里插入图片描述

八 实现选人打开聊天会话

(一)从登录接口中获取corpId
(二)获取企业jsapi_ticket
JS-SDK使用权限签名算法 - 接口文档 - 企业微信开发者中心
(三)获取应用jsapi_ticket
(四)完成企业和应用参数签名
(五)前端系统获得两种签名数据,进行配置注入,引入jssdk文件
(六)完成选人获取人员userId
企业微信选人
(七)打开选中人的聊天会话
企业微信打开会话

九 推送消息

(一)获得进入后端系统的人员信息
(二)根据当前登录用户所在企业,查找数据库表中的成员
(三)使用通讯录展示组件展示成员名称
通讯录展示组件

(四)开发发送消息页面
(五)调用发送消息接口发送消息
发送应用消息

十 上线部署

在这里插入图片描述
上架规范
在这里插入图片描述

相关文章:

  • SQL注入高级绕过手法汇总 重点
  • 在java程序中,类,进程,线程他们之间的关系以及main方法与他们之间的关系
  • 找出字符串中第一个匹配项的下标
  • Xmind快捷键大全
  • 区块链驱动的供应链金融创新:模型构建与商业化路径研究
  • 身份与访问管理(IAM):零信任架构下的认证授权技术与实战
  • cgroup sched_cfs_bandwidth_slice参数的作用及效果
  • CUDA编程之Grid、Block、Thread线程模型
  • uni-app云开发总结
  • 分布式队列对消息语义的处理
  • 飞机会员日
  • 【金仓数据库征文】金仓数据库KingbaseES:在技术与人文交织中开拓信创未来
  • 面试常问问题:Java基础篇
  • 前端让一个div的高度为屏幕的高度减去其他所有元素的高度(包括它们的margin和padding),并自适应。
  • ubuntu 20.04 编译运行lio-sam,并保存为pcd
  • C#高级语法--接口
  • 前端如何连接tcp 服务,接收数据
  • 服务器集群都有哪些优势?
  • 电子病历高质量语料库构建方法与架构项目(提示词设计篇)
  • OAuth2TokenEndpointFilter类介绍、应用场景和示例代码
  • 阿联酋启动第三届全球航空奖评选,奖金总额达百万美元
  • 政治局会议:持续稳定和活跃资本市场
  • “今日海上”对话“今日维也纳”,东西方艺术在上海碰撞
  • 见微知沪|最大力度消费补贴,最大程度满足人们对美好生活的向往
  • 央行:25日将开展6000亿元MLF操作,期限为1年期
  • 大卫·第艾维瑞谈历史学与社会理论③丨尼古拉斯·卢曼与历史研究