前言
因为微信小程序调用绝大多数后台接口时都需使用 access_token,由于access_token的时限只有2 个小时,需要定时刷新,还需要避免重复刷新access_token导致原有access_token过期。所以使用每隔半个小时获取一次access_token并将获取到的值存到redis中的解决方案,当需要用到该access_token时直接从redis中获取。从而避免多用户重复请求微信获取凭证接口而导致的access_token过期问题。
开始前准备
请求地址
https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET
请求参数
属性 | 类型 | 必填 | 说明 |
---|---|---|---|
grant_type | string | 是 | 填写 client_credential |
appid | string | 是 | 小程序唯一凭证,即 AppID |
secret | string | 是 | 小程序唯一凭证密钥,即 AppSecret,获取方式同 appid |
返回值
属性 | 类型 | 说明 |
---|---|---|
access_token | string | 获取到的凭证 |
expires_in | number | 凭证有效时间,单位:秒。目前是7200秒之内的值。 |
errcode | number | 错误码 |
errmsg | string | 错误信息 |
返回数据示例
1 | # 正常返回 |
同时还需要准备的是当前小程序的APPID和SECRET
微信公众平台-开发管理-开发设置
代码实现
POM依赖
1 | <dependencies> |
YAML 配置文件
1 | spring: |
配置类
后端使用RestTemplate代发请求,从而获取access_token
1 |
|
小程序端相关配置,APPID和APPSECRET即开始前准备从公众平台获取到的数据
1 | public class WechatConfig { |
工具类
Redis工具类,对RedisTemplate增删改查的简单封装
1 | package com.example.demo.utils; |
微信工具类,对获取access_token的实现
1 |
|
控制层接口
1 |
|