前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >企业微信接入文档

企业微信接入文档

作者头像
创译科技
发布2022-04-19 14:50:42
5.9K0
发布2022-04-19 14:50:42
举报
文章被收录于专栏:Node开发Node开发

1. 进入企业微信应用管理,需要配置应用的回调配置。

从上图可以看到应用有提供Token和EncodingAESKey,这两个参数是我们调用企业微信接口进行加解密操作需要使用到的。 数据回调和指令回调,可以是一个接口,也可以是分开,数据回调是直接调用,查看是否接口可以调通。指令回调是给后端的接口传送推一些数据,比如suit_token等。如果不太理解可以理解成就是后端需要提供一个接口,并且配置回调服务时,需要能同时支持HttpGet以及HttpPost两种能力。

回调接口的GET请求主要用于鉴权,也就是你在设置上面的回调配置时,企业微信企业微信会使用GET请求调用你后端已经实现的回调接口,带签名及密文参数到接口上,如果接口检查签名通过,并能正确返回密文参数对应的明文字符串,则验证通过。此时在企业微信的配置就开始生效。

举个简单的例子:

在你设置上面的回调配置接口,假设你的接口地址为/api/index/index,企业微信则会使用GET方式调用/api/index/index?msg_signature=ASDFQWEXZCVAQFASDFASDFSS&timestamp=13500001234&nonce=123412323&echostr=ENCRYPT_STR,然后后端需要使用应用提供的Token对timestamp,nonce,echostr三个参数进行签名,并将签名接口和msg_signature作比较,判断来源是否来源于企业微信,如果签名一致,则使用EncodingAESKey对企业微信提供的echostr加密字符串进行解密,并将解密得到的message返回给企业微信去做一致性比较,比较成功则设置回调配置接口成功。具体加解密算法可以直接使用企业微信提供的SDK,SDK地址:https://developer.work.weixin.qq.com/document/path/95372。

2. 设置应用的回调接口完毕,就进入正式的企业微信对接流程。刚才我们讲过了,假设你的回调接口地址为/api/index/index,你既需要实现GET请求去给企业微信验签,也需要实现POST请求。POST请求的用处就是在不同情况企业微信会使用POST请求传入不同的参数,后端需要在POST接口中针对企业微信传入的不同参数做不同的逻辑操作。企业微信对于POST 接口的说明文档链接:https://developer.work.weixin.qq.com/document/path/91116

简单解释下,就是企业微信使用POST调用接口时,会使用application/json传入很多参数,我们假设使用params去接收body传入的参数,params.xml.Encrypt[0]就是加密字符串需要用于解密的,然后和上面的解密算法一样使用EncodingAESKey对企业微信提供的params.xml.Encrypt[0]加密字符串进行解密,解密出来的message时一个xml,我们需要先对xml解析,解析成json格式,json数据其中有一个InfoType参数,这个参数就是表示当前操作是什么操作,我们一般只需要监听两个值,suite_ticket表示需要去获取系统的suite_access_token,create_auth表示企业的授权登录,需要做获取对应企业的组织架构等操作。

InfoType = suite_ticket时,json数据中会有一个SuiteTicket参数,需要使用SuiteTicket参数去获取suite_access_token,获取suite_access_token文档链接:https://developer.work.weixin.qq.com/document/path/90600

获取suite_access_token时,需要suite_ticket参数。suite_ticket由企业微信后台定时推送给“指令回调URL”,每十分钟更新一次,suite_ticket实际有效期为30分钟,通过本接口获取的suite_access_token有效期为2小时,开发者需要进行缓存,不可频繁获取。上面是获取suite_access_token文档对于suite_access_token和SuiteTicket的介绍,也就是说suite_access_token有效期两小时,每十分钟会推送一次SuiteTicket到回调接口,所以我们需要在InfoType = suite_ticket时,去调用接口获取suite_access_token并且替换旧的suite_access_token。大概看一个实现逻辑:

InfoType = create_auth时,代表企业管理员在授权使用这个应用,这时候就得获取企业的组织架构并进行存储

json数据中会有一个AuthCode参数表示企业授权码,首先第一步需要先使用AuthCode和suite_access_token去换取企业的基本信息,获取企业授权码的文档链接:https://developer.work.weixin.qq.com/document/10975#%E8%8E%B7%E5%8F%96%E4%BC%81%E4%B8%9A%E6%B0%B8%E4%B9%85%E6%8E%88%E6%9D%83%E7%A0%81,这一步和上面调用接口没什么区别,获取企业信息成功,需要存储企业基本信息到数据库并判断企业是否已经录入信息,后续员工登录就是通过这个员工表去判断员工权限,就简单贴一个代码:

企业信息写入成功,标识一个企业的参数为corp_id,下一步就是录入企业的组织架构。首先先获取企业的部门信息,获取企业部门列表的文档链接为:https://developer.work.weixin.qq.com/document/path/90344,直接上一步获得的企业授权后得到的access_token可以获取企业的部门列表,然后将部门列表存入到数据库,然后再通过循环分别获取企业部门下的成员列表,再分别写入到数据库。获取企业某个部门的成员列表文档链接:https://developer.work.weixin.qq.com/document/path/90336,这样循环结束就可以把整个企业的组织架构写入到数据库中,如果系统需要有组织架构的更新操作,也可以自行接入关于部门和成员增删改接口,这里就不多说,简单看个例子:

到这里B端企业管理员的整个授权流程就全部写完成了,然后可以根据企业组织架构去设置系统的不同权限,这样组织架构的不同员工登陆后就会拥有系统的不同权限。

本文参与?腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2022-03-31,如有侵权请联系?cloudcommunity@tencent.com 删除

本文分享自 程序猿周先森 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与?腾讯云自媒体分享计划? ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
集团账号管理
集团账号管理为企业客户提供云上多账号管理能力,您可以便捷的完成多个账号的的统一授权管理、财务管理、资源共享管理以及操作审计等,通过这些功能,能够更好地满足企业的预算、安全性和合规性需求。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
http://www.vxiaotou.com