本文同步至我的CSDN博客:https://blog.csdn.net/qq_43270074/article/details/108511883
一、前言
1、基于企业微信第三方应用开发API文档,做了一个企业微信开发说明文档,总结踩的坑以及对文档的一个补充。
2、本文主要针对第三方应用开发,方便第三方服务商的云应用上架企业微信应用市场
3、实现目标:服务商预先在第三方管理端注册登记应用信息。企业选择使用第三方应用时,通过授权流程来一键安装应用,我们将微信小程序放在企业微信应用市场
二、区分几种token
作为第三方服务商的开发者,在开始开发之前,需要先了解各种接口凭证的差别,以更好的理解第三方的开放体系
1、应用授权的suite_access_token
企业在授权应用时,第三方需要以suite_id(第三方应用ID)、suite_secret(第三方应用密钥)(获取方法为:登录服务商管理后台->标准应用服务->应用管理栏,点进某个应用即可看到)换取suite_access_token,再以suite_access_token访问应用授权的接口
如何获取:
1)获取suite_id和suite_secret
在服务商管理后台(说明一下服务商管理后台即是第三方应用提供商进去的企业微信管理后台,不同于企业管理后台,对应用对很多配置都要在这里配置)应用管理里找到应用,可以获取应用对suite_id和suite_secret,是第三方应用的唯一标识。
2)获取suite_ticket
suite_ticket由企业微信后台向登记的应用指令回调地址定期推送(10分钟),用于加强调用者身份确认(即使suite_secret泄露,也无法获取到suite_access_token)。
若丢失suite_ticket,除了等待定时推送的事件外,也可以在管理端(服务商管理后台)手动触发推送。
手动触发:
那么如何获取呢?
企业微信会每十分钟定时回调我们配置的回调接口,会推送suite_ticket
回调接口收到信息后,将suite_ticket放在redis缓存,并设置过期时间为十分钟
//将suiteticket放入redis中, SuiteTicket十分钟更新一次
redisTemplate.opsForValue().set(WX2_CP_SUITE_TICKET, suiteTicket, 10, TimeUnit.MINUTES);
至此就可以得到suite_access_token
2、服务商的provider_access_token
以corpid、provider_secret(获取方法为:登录服务商管理后台->标准应用服务->通用开发参数,可以看到)换取provider_access_token,代表的是服务商的身份,而与应用无关。请求单点登录、注册定制化等接口需要用到该凭证。该token在应用开发时基本没什么用
3、企业的access_token
为企业开放的所有接口,都必须以企业的corpid和永久授权码来获取access_token,然后调用通讯录、应用、消息等接口服务于企业。接口,很重要的一个token
1)参数需要一个suite_access_token
在上面已经获取到
2)auth_corpid
每个服务商同时也是一个企业微信的企业,都有唯一的corpid。获取此信息可在服务商管理后台“应用开发”-“通用开发参数”可查看
3)permanent_code
永久授权码是在当企业授权安装我们第三方应用时,会回调我们自己当接口,这时企业微信会给一个auth_code参数,拿到这个code结合suite_access_token就可以获取永久授权码,需要保存永久授权码到自己的数据库。
最后调用接口获取access_token
注意接口需要到是哪一个token,建议将企业的access_token和应用授权的suite_access_token都缓存在redis中,设置过期时间为2小时
//保存到redis中
redisTemplate.opsForValue().set(Constants.WX_CP_ACCESS_TOKEN_PREFIX + corpId + ":" + wx2CpThirdProperties.getSuiteId2(), accessToken, 120, TimeUnit.MINUTES);
三、回调说明
企业微信在有如下这些事件的时候,会触发回调:
推送suite_ticket
授权成功通知
变更授权通知
取消授权通知
成员通知事件
部门通知事件
标签通知事件
应用变更可见范围
外部联系人变更
1、配置回调接口
在服务商管理后台,应用详情处的回调配置进行配置
2、回调本地测试
在测试阶段,可以将回调地址写成本地回调地址,需要用到内网穿透工具将本地服务配置为回调地址
工具:WeNAT
能够将外部的请求转发到本地,下载后https://www.wezoz.com,直接按照说明配置本地服务端口号就可以得到域名
3、注意
在本地测试回调的时候,有可能代码没走完就触发下一次回调,会导致token失效等问题,这个时候基本功能点保证的 前提下,可以通过输出日志,上测试环境测试
四、总结
知道了最重要的token获取和回调配置,就可以进行下一步的开发,下一章介绍,身份认证和外部联系人管理。