文章目录

  • 前言
  • 一、获取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凭证相关推荐

  1. SpringBoot获取企业微信token

    引入依赖: <dependency><groupId>commons-httpclient</groupId><artifactId>commons-h ...

  2. SpringBoot实现企业微信上传图片

    文章目录 前言 一.上传图片 二.使用步骤 1.引入库 2.实现代码 总结 前言 上传的图片大小限制:图片文件大小应在 5B ~ 2MB 之间 一.上传图片 上传图片得到图片URL,该URL永久有效 ...

  3. 获取企业微信access-token

    @Resourceprivate RedisTemplate<String, Object> redisTemplate;/*** 获取access-token*/@GetMapping( ...

  4. kettle实例(获取企业微信打卡数据并将数据入库)

    ETL.kettle初学者实例(获取企业微信打卡数据并将数据入库) Kettle简介 实例流程简介 从数据库中取出人员信息 处理人员信息 获取人员打卡信息 将打卡信息入库 总结 Kettle简介 Ke ...

  5. 微信客服机器人(踩坑记录、SpringBoot、企业微信)

    微信客服机器人(踩坑记录.SpringBoot.企业微信) 转载请注明出处:https://www.jjput.com/archives/wei-xin-ke-fu-ji-qi-ren 总体流程 当有 ...

  6. 小程序获取企业微信二维码,使用联系我插件配置企业微信二维码

    通过配置获取企业微信二维码总共分为五步: 第一步:登录企业微信管理后台,查询企业微信的企业ID(corpid)和Secret(corpsecret); 第二步:获取access_token: 第三步: ...

  7. springboot实现企业微信机器人自动按时播报天气

    springboot实现企业微信机器人自动按时播报天气 第一步搭建项目...这个没有什么好说的 配置: <dependency><groupId>org.apache.http ...

  8. Springboot+vue+企业微信登录

    Springboot+ vue +企业微信登录 前端构造企业微信授权链接 第一步,企业微信后台创建一个应用 构造企业微信网页授权OAuth2链接 前后端搭配使用企业微信登录 其他 前端构造企业微信授权 ...

  9. 获取企业微信的群组 ID

    获取企业微信的群组 ID 的方法如下: 打开企业微信后台中的 "通讯录". 在 "通讯录" 页面中找到需要添加的群组并进入该群组详情页. 在该群组详情页中找到 ...

最新文章

  1. NLP的神经网络训练的新模式
  2. 谷歌三驾马车将成历史,创始人退位,皮查伊兼任母公司CEO
  3. 用cmd运行java可以javac不行(win10)
  4. 支付宝的商业与技术创新双轮驱动 创造数字时代普惠金融“奇迹”
  5. 1.极限——介绍_1
  6. 对方服务器未响应,重新投递中 postfix手心,我配置的Postfix邮件服务器邮件发不出去,在mail.log里显示如下~请求帮助...
  7. SAP License:老板都不懂ERP,怎么会用得好ERP呢?
  8. apt-get install 的参数(add-apt-repository)
  9. js undefined null
  10. 开源demo| 视频应用类开源 Demo 大盘点
  11. 原生js追加html代码,原生js动态添加元素
  12. JNI/NDK入门指南之JavaVM和JNIEnv
  13. win11 恢复win10开始菜单及任务栏
  14. pdf阅读神器推荐——PDF-XChange Editor V8
  15. 基于CC2430的Zigbee开发套件【转】
  16. 丙烯颜料试用心得和丙烯绘画入门
  17. 企业实战, java、spingboot微信扫码支付,页面生成微信二维码,微信扫码付款,websocket通知,处理订单!复制粘贴代码直接开干
  18. vue动态配置嵌套页面(含iframe嵌套)可实现白天夜间皮肤切换
  19. 组件-Element—Badge(标记)
  20. 学习笔记(5):JavaWeb基础核心技术-5. 佟刚_JavaWEB_Servlet 的配置及生命周期方法

热门文章

  1. python窗口显示图片imread() imshow()_Python-OpenCV:cv2.imread(),cv2.imshow(),cv2.imwrite()
  2. 未来应用陈鸿:被微信封掉公众号后怎么办?给微信创业者的10点真诚建议
  3. 工作流activiti
  4. 【西门子】S7-PLCSIM Advance_V2/V3, Error Code: -30,LicenseNotFound /NetGroup Packet Filter Driver (NPF)
  5. 亳州市消防支队乡镇(街道)消防工作站综合管理平台案例
  6. Java神奇代码奇葩代码
  7. 哪个牌子手持洗拖一机好?热门洗地机盘点
  8. 采购管理系统--合同、采购单、发货单、返厂单管理
  9. mysql收货地址表_收货地址表结构 以及创建修改流程
  10. 查找统计python列表中的重复元素