springboot获取企业微信的access_token凭证
文章目录
- 前言
- 一、获取access_token
- 二、使用步骤
- 1.引入jar包
- 2.代码实现
- 总结
前言
企业微信服务端API开放了丰富的能力接口,开发者可以借助接口能力,实现企业服务及企业微信的集成和支持的能力。调用这些API接口都离不开access_token的接口凭证。只有拿到这个才能进行后续的服务调用。
一、获取access_token
获取access_token是调用企业微信API接口的第一步,相当于创建了一个登录凭证,其它的业务API接口,都需要依赖于access_token来鉴权调用者身份。
因此开发者,在使用业务接口前,要明确access_token的颁发来源,使用正确的access_token。
二、使用步骤
1.引入jar包
我这里使用了Hutool工具包
<!-- hutool工具包 -->
<dependency><groupId>cn.hutool</groupId><artifactId>hutool-all</artifactId><version>5.4.6</version>
</dependency>
2.代码实现
从官方文档拿到接口地址和参数,如不明白可参考官方文档:https://developer.work.weixin.qq.com/document/path/91039
请求方式: GET(HTTPS)
请求地址: https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=ID&corpsecret=SECRET
参数说明:
参数 | 是否必须 | 说明 |
---|---|---|
corpid | 是 | 企业ID,获取方式参考:术语说明-corpid |
corpsecret | 是 | 应用的凭证密钥,获取方式参考:术语说明-secret |
权限说明:
每个应用有独立的secret,获取到的access_token只能本应用使用,所以每个应用的access_token应该分开来获取。
注意事项:access_token的有效期通过返回的expires_in来传达,正常情况下为7200秒(2小时),有效期内重复获取返回相同结果,过期后获取会返回新的access_token。
我这里做的是存入数据库,开发者们可以自行选择缓存方式如:数据库、redis等。
核心代码如下:
/*** 获取token* @param corpId 企业的ID* @param agentId 应用的密钥凭证* @return*/public String getToken(String corpId, String agentId){String token1111 = "";try {log.info("获取access_token开始......");//先从数据库查,有做有效时间判断,无重新拉取TWxAccessToken wxAccessToken = tWxAccessTokenMapper.getAccessToken(corpId,agentId,"N");if(wxAccessToken != null){Date expiresTime = wxAccessToken.getExpiresTime();log.info("获取凭证有效期:{},当前时间是否小于有效时间:{}",expiresTime,new Date().before(expiresTime));if (new Date().before(expiresTime)) { //当前时间小于有效时间token = wxAccessToken.getAccessToken();}else{//替换url的字段String requestUrl = accessTokenUrl.replace("ID", corpId).replace("SECRET",agentId.trim());String result = HttpRequest.get(requestUrl).setHttpProxy(httpProxyHost, httpProxyPort).execute().body();log.info("数据库有资源,从企微获取access_token结果:{}",result);JSONObject jsonObject = JSONObject.parseObject(result);if (null != jsonObject) {token = jsonObject.getString("access_token");wxAccessToken.setAccessToken(token);wxAccessToken.setExpiresTime(DateUtil.offsetSecond(new Date(),jsonObject.getInteger("expires_in")));log.info("更新access_token");tWxAccessTokenMapper.updateAccessToken(wxAccessToken);}}}else{//数据库没有记录,从企微拉取,拉取之后存入数据库String requestUrl = accessTokenUrl.replace("ID", corpId).replace("SECRET",agentId.trim());String result = HttpRequest.get(requestUrl).setHttpProxy(httpProxyHost, httpProxyPort).execute().body();log.info("数据库无资源,从企微获取access_token结果:{}",result);JSONObject jsonObject = JSONObject.parseObject(result);if (null != jsonObject) {token = jsonObject.getString("access_token");wxAccessToken = new TWxAccessToken();wxAccessToken.setCorpId(corpId);wxAccessToken.setAgentSecret(agentId);wxAccessToken.setAccessToken(token);wxAccessToken.setExpiresTime(DateUtil.offsetSecond(new Date(),jsonObject.getInteger("expires_in")));wxAccessToken.setFlag("N");log.info("新增access_token");tWxAccessTokenMapper.insert(wxAccessToken);}}}catch (Exception e){log.error("获取token失败:{}",e.getMessage());}return token;}
返回结果:
expires_in表示的就是有效时间,这里是秒
{"errcode": 0,"errmsg": "ok","access_token": "1111111111","expires_in": 7200
}
参数说明:
参数 | 说明 |
---|---|
errcode | 出错返回码,为0表示成功,非0表示调用失败 |
errmsg | 返回码提示语 |
access_token | 获取到的凭证,最长为512字节 |
expires_in | 凭证的有效时间(秒) |
总结
以上就是今天要讲的内容,需要注意的有两个点:
1.权限:每个应用有独立的secret,获取到的access_token只能本应用使用,所以每个应用的access_token应该分开来获取,不能多个应用用同一个access_token
2.有效期:开发者需要缓存access_token,用于后续接口的调用(注意:不能频繁调用gettoken接口,否则会受到频率拦截)。当access_token失效或过期时,需要重新获取。
注:企业微信可能会出于运营需要,提前使access_token失效,开发者应实现access_token失效时重新获取的逻辑。
springboot获取企业微信的access_token凭证相关推荐
- SpringBoot获取企业微信token
引入依赖: <dependency><groupId>commons-httpclient</groupId><artifactId>commons-h ...
- SpringBoot实现企业微信上传图片
文章目录 前言 一.上传图片 二.使用步骤 1.引入库 2.实现代码 总结 前言 上传的图片大小限制:图片文件大小应在 5B ~ 2MB 之间 一.上传图片 上传图片得到图片URL,该URL永久有效 ...
- 获取企业微信access-token
@Resourceprivate RedisTemplate<String, Object> redisTemplate;/*** 获取access-token*/@GetMapping( ...
- kettle实例(获取企业微信打卡数据并将数据入库)
ETL.kettle初学者实例(获取企业微信打卡数据并将数据入库) Kettle简介 实例流程简介 从数据库中取出人员信息 处理人员信息 获取人员打卡信息 将打卡信息入库 总结 Kettle简介 Ke ...
- 微信客服机器人(踩坑记录、SpringBoot、企业微信)
微信客服机器人(踩坑记录.SpringBoot.企业微信) 转载请注明出处:https://www.jjput.com/archives/wei-xin-ke-fu-ji-qi-ren 总体流程 当有 ...
- 小程序获取企业微信二维码,使用联系我插件配置企业微信二维码
通过配置获取企业微信二维码总共分为五步: 第一步:登录企业微信管理后台,查询企业微信的企业ID(corpid)和Secret(corpsecret); 第二步:获取access_token: 第三步: ...
- springboot实现企业微信机器人自动按时播报天气
springboot实现企业微信机器人自动按时播报天气 第一步搭建项目...这个没有什么好说的 配置: <dependency><groupId>org.apache.http ...
- Springboot+vue+企业微信登录
Springboot+ vue +企业微信登录 前端构造企业微信授权链接 第一步,企业微信后台创建一个应用 构造企业微信网页授权OAuth2链接 前后端搭配使用企业微信登录 其他 前端构造企业微信授权 ...
- 获取企业微信的群组 ID
获取企业微信的群组 ID 的方法如下: 打开企业微信后台中的 "通讯录". 在 "通讯录" 页面中找到需要添加的群组并进入该群组详情页. 在该群组详情页中找到 ...
最新文章
- NLP的神经网络训练的新模式
- 谷歌三驾马车将成历史,创始人退位,皮查伊兼任母公司CEO
- 用cmd运行java可以javac不行(win10)
- 支付宝的商业与技术创新双轮驱动 创造数字时代普惠金融“奇迹”
- 1.极限——介绍_1
- 对方服务器未响应,重新投递中 postfix手心,我配置的Postfix邮件服务器邮件发不出去,在mail.log里显示如下~请求帮助...
- SAP License:老板都不懂ERP,怎么会用得好ERP呢?
- apt-get install 的参数(add-apt-repository)
- js undefined null
- 开源demo| 视频应用类开源 Demo 大盘点
- 原生js追加html代码,原生js动态添加元素
- JNI/NDK入门指南之JavaVM和JNIEnv
- win11 恢复win10开始菜单及任务栏
- pdf阅读神器推荐——PDF-XChange Editor V8
- 基于CC2430的Zigbee开发套件【转】
- 丙烯颜料试用心得和丙烯绘画入门
- 企业实战, java、spingboot微信扫码支付,页面生成微信二维码,微信扫码付款,websocket通知,处理订单!复制粘贴代码直接开干
- vue动态配置嵌套页面(含iframe嵌套)可实现白天夜间皮肤切换
- 组件-Element—Badge(标记)
- 学习笔记(5):JavaWeb基础核心技术-5. 佟刚_JavaWEB_Servlet 的配置及生命周期方法
热门文章
- python窗口显示图片imread() imshow()_Python-OpenCV:cv2.imread(),cv2.imshow(),cv2.imwrite()
- 未来应用陈鸿:被微信封掉公众号后怎么办?给微信创业者的10点真诚建议
- 工作流activiti
- 【西门子】S7-PLCSIM Advance_V2/V3, Error Code: -30,LicenseNotFound /NetGroup Packet Filter Driver (NPF)
- 亳州市消防支队乡镇(街道)消防工作站综合管理平台案例
- Java神奇代码奇葩代码
- 哪个牌子手持洗拖一机好?热门洗地机盘点
- 采购管理系统--合同、采购单、发货单、返厂单管理
- mysql收货地址表_收货地址表结构 以及创建修改流程
- 查找统计python列表中的重复元素