一、前言

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获取和回调配置,就可以进行下一步的开发,下一章介绍,身份认证和外部联系人管理。

企业微信开发(1)——整体说明相关推荐

  1. 手把手教你springboot企业微信开发(三)之 weui、zepto、thymeleaf

    手把手教你springboot企业微信开发(三)之 weui.zepto.thymeleaf weui zepto thymeleaf 这一篇主要事基础部分,概述一下weui.zepto.thymel ...

  2. 用thinkphp进行微信开发的整体设计思考

    用thinkphp进行微信开发的整体设计思考 http://www.2cto.com/weixin/201504/388423.html 2015-04-09      0个评论       作者:明 ...

  3. 前端企业微信开发内嵌H5记录

    前端企业微信开发内嵌H5记录(Vue) 文章目录 前端企业微信开发内嵌H5记录(Vue) 一.引入相应JS-SDK 1.JS-SDK 二.授权(网页授权) 1.构造网页授权链接 2.发起授权 3.注入 ...

  4. 企业微信开发:获取 access_token(二)

    前言   简单的用白话了解一下企业微信的作用,企业微信是腾讯微信团队为企业打造的专业办公管理工具.大致和钉钉差不多,适用于政府.企业等各类组织的一个产品,可以有效的帮您管理员工.个人感觉企业微信开发要 ...

  5. 服务器端缓存企业微信,企业微信开发

    企业微信开发又以下三类,可以根据需要查看相应的文档 企业内部应用开发:开发内部使用应用,开发个性化办公应用 第三方应用开发:开发出来的应用可供其他企业使用 第三方应用开发.png 智慧硬件开发 企业内 ...

  6. 企业微信开发H5页面授权 使用接口的问题

    企业微信 h5踩坑指南 企业微信开发H5页面授权 使用接口的问题 开发企业微信的时候 h5页面需要获取登录用户的信息,这个时候就需要jsdk里面的 [开发文档] (https://work.weixi ...

  7. 企业微信开发总结-获取通讯录

    企业微信开发总结-获取通讯录 最近遇到个项目需求,需要能够获取到用户企业的通讯录,同步到我们系统中,这样就不用重复输入一批企业人员了.一开始想的很简单,实际研究下来发现企业微信比个人微信对接起来复杂多 ...

  8. Java企业微信开发-企业微信所有类型消息推送封装

    企业微信开发第一步获取AccessToken,企业微信的AccessToken和公众号的不一样,企业微信所有接口调用只需要一个AccessToken,而公众号授权和jssdk是分开的 一.获取企业微信 ...

  9. 企业微信开发第三方应用开发视频教程,ToB Dev李月喜全网首发

    csdn程序员学院<企业微信三方应用开发>视频课程,全网企业微信三方应用开发教程首发, https://edu.csdn.net/course/detail/30582  即将完结欢迎试看 ...

  10. 微信及企业微信内嵌浏览器内核信息及H5跑分数据-企业微信开发

    加我微信li570467731,拉你进二百多人企业微信开发同行群(文末有二维码). 企业微信开发三部曲: <企业微信应用开发概述篇(免费)>已完结: <企业微信开发第三方应用开发篇& ...

最新文章

  1. js 输出中文乱码 解决办法
  2. 能打羽毛球又能击穿墙壁,戴上这款机械臂,秒变蜘蛛侠反派「章鱼博士」
  3. python简单开发接口
  4. leetcode 236. 二叉树的最近公共祖先 思考分析
  5. 跑三小时的monkey测试该怎么算_浅谈App测试(下)~带音频
  6. Python小白的数学建模课-17.条件最短路径算法
  7. mysql php 流式读取_PHP MySQL 读取数据
  8. 经典卷积神经网络的学习(三)—— Inception Net
  9. android视频播放器排行榜,安卓视频播放器哪个好 五款主流视频播放器对比
  10. BUMO 3.0原理以及设计.
  11. 中望CAD工具栏消失不见的解决方案
  12. Arduino驱动MAX30102心率血氧传感器模块
  13. Java实现——求指定年份的父亲节(母亲节)是几月几号
  14. EL表达式与JSTL标签库
  15. 【区块链108将】千方基金点付大头:投资区块链,不要让过往认知限制你的想象
  16. Android序列化之Parcel
  17. oracle集群crs,oracle rac集群 crs常用命令(转)
  18. Linux双网卡绑定bond0(单IP)
  19. python设置变量age和tall的值、编写一个_Python变量学习
  20. NLP标注工具Brat的简单使用

热门文章

  1. matlab实现SCPI控制安捷伦电源
  2. 计算机网络工程教程:基于cisco路由器和交换机,计算机网络工程教程—基于cisco路由器和交换机教学课件作者陆魁军chap7思科路由器的高级功能.ppt...
  3. Android程序设计基础 • 【目录】
  4. 内网渗透 | powershellwmic详解
  5. 微型计算机中的西文字符编码,在微型计算机中,应用最普遍的西文字符编码是什...
  6. 金蝶生成凭证模板_软件-金蝶外购入库凭证模版
  7. PHP HTML转PDF
  8. mysql主从配置详解_MySQL主从配置详解
  9. 组态王网页服务器,组态王服务器 客户端
  10. 如何将鼠标计算机配置放到板载,罗技G500S游戏鼠标配备有板载内存让鼠标脱离驱动实现自定义功能...