微信小程序01: springboot获取accessToken方式 ,配合redis缓存使用 |
您所在的位置:网站首页 › 小程序的token如何存储 › 微信小程序01: springboot获取accessToken方式 ,配合redis缓存使用 |
全文目录,一步到位
1.前言简介1.1 专栏传送门1.1.1 上文小总结1.1.2 上文传送门
2. springboot获取accessToken2.0 accessToken简介2.1 准备工作2.2 具体代码使用与注释如下2.2.1 代码解释(一)[无需复制]2.2.2 代码解释(二)[无需复制]
2.3 最后一步 获取accessToken2.3.1 两行代码搞定2.3.2 微信小程序异常码(如图所示)
3. 文章的总结与预告3.1 本文总结3.2 下文预告
1.前言简介
access_token是有次数限制的 一天2000次 超过了需要刷新accessToken限制次数,10次/月 1.1 专栏传送门 1.1.1 上文小总结上文为核心文章, 请先复制上文的代码后再复制此篇代码 里面是对微信小程序大部分操作的总结与封装 1.1.2 上文传送门===> 微信小程序00: 获取accessToken,手机号, 小程序二维码,openId与unionId 公共配置类(核心篇) 2. springboot获取accessToken微信小程序官方文档: => 传送门 传送门: 小程序信息获取方式 微信小程序00: 获取accessToken,手机号, 小程序二维码,openId与unionId 公共配置类(核心篇) 2.2.1 代码解释(一)[无需复制]找到WechatServiceUtils类 的 getRedisCacheAccessToken()方法 这个是获取缓存中的accessToken * 2. 获取缓存中的AccessToken * * 没有从微信拉取[可配合定时] * * @return accessToken */ public String getRedisCacheAccessToken() { /*校验: 缓存中有accessToken的key*/ if (redisCache.hasKey(CacheConstants.WX_ACCESS_TOKEN)) { log.info("二级缓存数据取出accessToken成功!"); return redisCache.getCacheObject(CacheConstants.WX_ACCESS_TOKEN); } //这里不用三目(不好看~~) return getWxMiniAccessToken(); } 2.2.2 代码解释(二)[无需复制]找到WechatServiceUtils类 的 getWxMiniAccessToken()方法 访问微信官方获取两小时的 accessToken JSONObject 需要引fastJson/fastJson2包 /** * 3. 访问微信官方获取两小时的 accessToken * * @return accessToken */ public String getWxMiniAccessToken() { Map query = new HashMap(); query.put("grant_type", wechatConfigProperties.getGrantType());//client_credential query.put("secret", wechatConfigProperties.getAppSecret()); query.put("appid", wechatConfigProperties.getAppId()); try { String aTokenUrl = wechatConfigProperties.getATokenUrl(); // ResponseEntity responseEntity = restTemplate.postForEntity(aTokenUrl, query, JSONObject.class); ResponseEntity responseEntity = restTemplate.getForEntity(aTokenUrl, JSONObject.class, query); HttpStatus statusCode = responseEntity.getStatusCode(); //状态码 // System.out.println(responseEntity.getHeaders());//获取到头信息 /*校验: 如果接口成功 200*/ if (Objects.equals(statusCode.value(), 200)) { JSONObject responseJsonBody = responseEntity.getBody();//响应体 log.info("[请求微信小程序官方接口] => 获取accessToken请求成功返回值:{}", responseJsonBody); if (responseJsonBody == null) { log.info("微信小程序获取accessToken请求返回result是null!"); throw new ServiceException(ResponseEnum.A10005); } //获取accessToken String accessToken = responseJsonBody.getString("access_token"); if (StringUtils.isBlank(accessToken)) { log.info("微信小程序获取accessToken请求返回access_token是null!"); throw new ServiceException(ResponseEnum.A10005); } //放入缓存中 redisCache.setCacheObject(CacheConstants.WX_ACCESS_TOKEN, accessToken, wechatConfigProperties.getExpiredTime(), TimeUnit.MINUTES); return accessToken; } else { log.error("微信HttpStatus的StatusCode不是200 {}", statusCode.value()); throw new ServiceException(ResponseEnum.A10005); } } catch (Exception e) { e.printStackTrace(); log.info("微信小程序获取accessToken请求异常信息 {}", e.getMessage()); throw new ServiceException(ResponseEnum.A10005); } } 2.3 最后一步 获取accessToken 2.3.1 两行代码搞定第一行代码 AutoWired注入一下 (我用的lombok注解@RequiredArgsConstructor) 解释一下: @AutoWired可以加到构造方法上, 同时在构造方法上的注入会自动填充那么也就是全参构造 @AllArgsConstructor 注解, 替代了属性上的@AutoWired有一些属性不希望@AutoWired, 在希望的属性上加final, 在类上加@RequiredAllArgsConstructor 代码如下 private final WechatServiceUtils wechatServiceUtils;第二行代码 直接获取即可 //1.获取access_token String accessToken = wechatServiceUtils.getRedisCacheAccessToken();执行结果如下:
作者pingzhuyan 感谢观看 |
今日新闻 |
点击排行 |
|
推荐新闻 |
图片新闻 |
|
专题文章 |
CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭 |