获取微信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.");
        }
    }
相关文章
|
移动开发 小程序 API
微信外部浏览器或短信链接唤起微信小程序的解决方案
微信外部浏览器或短信链接唤起微信小程序的解决方案
3735 1
|
存储 自然语言处理 数据安全/隐私保护
微信公众号后台回复5s重试解决方案和思路
微信公众号后台回复5s重试解决方案和思路
1318 0
|
小程序 JavaScript 前端开发
uni-app开发微信小程序:四大解决方案,轻松应对主包与vendor.js过大打包难题
uni-app开发微信小程序:四大解决方案,轻松应对主包与vendor.js过大打包难题
5126 1
|
JSON 监控 小程序
微信百度字节小程序包过大解决方案(实战经验总结)-优雅草卓伊凡|果果|小无
微信百度字节小程序包过大解决方案(实战经验总结)-优雅草卓伊凡|果果|小无
1717 14
微信百度字节小程序包过大解决方案(实战经验总结)-优雅草卓伊凡|果果|小无
|
人工智能 机器人 Serverless
《10 分钟构建 AI 客服并应用到网站、钉钉或微信中》解决方案体验评测
一文带你详细了解如何基于百炼平台、函数计算或者计算巢AppFlow10 分钟构建 AI 客服并应用到网站、钉钉或微信中,附全篇图文详解,欢迎阅读评价。
1619 10
《10 分钟构建 AI 客服并应用到网站、钉钉或微信中》解决方案体验评测
|
机器学习/深度学习 人工智能 JSON
微信小程序原生AI运动(动作)检测识别解决方案
近年来,疫情限制了人们的出行,却推动了“AI运动”概念的兴起。AI运动已在运动锻炼、体育教学、线上主题活动等多个场景中广泛应用,受到互联网用户的欢迎。通过AI技术,用户可以在家中进行有效锻炼,学校也能远程监督学生的体育活动,同时,云上健身活动形式多样,适合单位组织。该方案成本低、易于集成和扩展,已成功应用于微信小程序。
|
缓存 小程序 索引
uni-app开发微信小程序时vant组件van-tabs的使用陷阱及解决方案
uni-app开发微信小程序时vant组件van-tabs的使用陷阱及解决方案
1293 1
|
人工智能 搜索推荐 UED
通过体验《10 分钟构建 AI 客服并应用到网站、钉钉或微信中》解决方案测评
本次测试涵盖了钉钉和微信上的部署体验。部署流程简单便捷,约10分钟即可完成基础配置,适合技术背景各异的用户。功能上,网站端响应迅速但准确度有待提升;钉钉内集成良好,响应及时但答案丰富度有限;微信端用户友好,回答深度需加强。稳定性方面表现出色,资源占用合理。此外,还支持一定程度的自定义开发以满足不同需求。总的来说,这是一个快速搭建AI客服的有效方案,不过还需针对特定场景做更多优化工作。
421 2
|
JSON 小程序 前端开发
微信小程序-人脸核身解决方案
微信小程序-人脸核身解决方案
2920 0
|
云安全 存储 小程序
PHP微信小程序解决方案PhpMall
PHP微信小程序解决方案PhpMall
398 0