获取微信access_token每天超过规定次数解决方案

简介: 获取微信access_token每天超过规定次数解决方案

思路

1.第一次获取放设置过期时间放map

2.下次从map中获取,如果如果为空就请求微信api. 如果不为空,就拿上次存放的过期时间和现在时间做比对,如果过期时间早于当前时间,就重新获取。

代码

    protected synchronized AccessToken getAccessToken() {
        AccessToken accessToken = (AccessToken)tokenMap.get(this.appid);
        Long now = (new Date()).getTime();
        if (accessToken == null || now > accessToken.getExpiresTimestemp()) {
            accessToken = WechatUtils.getAccessToken(this.appid, this.secret);
            tokenMap.put(this.appid, accessToken);
            logger.info("new accessToken");
        }
        return accessToken;
    }
    public static AccessToken getAccessToken(String appid, String secret) {
        if (appid != null && secret != null) {
            ClientConfig config = new DefaultClientConfig();
            Client client = Client.create(config);
            WebResource cosmsservice = client.resource("https://api.weixin.qq.com/cgi-bin/token");
            ClientResponse clientResponse = (ClientResponse)cosmsservice.queryParam("grant_type", "client_credential").queryParam("appid", appid).queryParam("secret", secret).get(ClientResponse.class);
            if (clientResponse.getStatus() != 200) {
                throw new IllegalStateException("status error:" + clientResponse.getStatus());
            } else {
                Map result = (Map)(new Gson()).fromJson((String)clientResponse.getEntity(String.class), Map.class);
                if (result.get("errcode") != null) {
                    throw new WechatAccessException(result.get("errcode") + "", result.get("errmsg") + "");
                } else {
                    long now = (new Date()).getTime();
                    return new AccessToken((String)result.get("access_token"), ((Double)result.get("expires_in")).longValue() * 1000L + now);
                }
            }
        } else {
            throw new IllegalArgumentException("appid or secret was null.");
        }
    }
相关文章
|
19天前
|
移动开发 小程序 API
微信外部浏览器或短信链接唤起微信小程序的解决方案
微信外部浏览器或短信链接唤起微信小程序的解决方案
212 1
|
19天前
|
存储 自然语言处理 数据安全/隐私保护
微信公众号后台回复5s重试解决方案和思路
微信公众号后台回复5s重试解决方案和思路
98 0
|
小程序 JavaScript 数据可视化
微信小程序innerHTML解决方案
小程序项目开发中有这么一个需求,接口返回 <div>abc<p>123</p></div> 字符串,然后在小程序页面显示。
微信小程序innerHTML解决方案
|
19天前
|
JSON 小程序 C#
微信网页授权之使用完整服务解决方案
微信网页授权之使用完整服务解决方案
|
19天前
|
小程序 JavaScript 数据可视化
微信小程序innerHTML解决方案
微信小程序innerHTML解决方案
|
7月前
|
算法 API Go
微信小游戏获取用户相关api返回签名错误87009的解决方案
微信小游戏获取用户相关api返回签名错误87009的解决方案
|
11月前
|
JSON 小程序 前端开发
微信小程序学习实录2(下拉刷新、下拉加载更多、小程序事件、PHP后端代码、刷新无数据解决方案)
微信小程序学习实录2(下拉刷新、下拉加载更多、小程序事件、PHP后端代码、刷新无数据解决方案)
342 0
|
数据采集 编解码 小程序
微信小程序 | 人脸识别的最终解决方案
微信小程序 | 人脸识别的最终解决方案
1182 0
微信小程序 | 人脸识别的最终解决方案
|
11月前
layui框架实战案例(4):因内容安全策略导致弹出层模态框无法正常显示微信公众号文章使用window.open的解决方案
layui框架实战案例(4):因内容安全策略导致弹出层模态框无法正常显示微信公众号文章使用window.open的解决方案
48 1
|
11月前
|
数据采集 移动开发 前端开发
漏刻有时数据可视化大屏数据采集工具(2):百度人脸识别调用微信摄像头ajax上传识别的解决方案
漏刻有时数据可视化大屏数据采集工具(2):百度人脸识别调用微信摄像头ajax上传识别的解决方案
69 0

热门文章

最新文章