jfinal-weixin 微信获取access_token redis缓存后没起作用,还是频繁获取

13426321208 发布于 2017/08/01 17:34
阅读 547
收藏 0

MySQL连接为什么挂死了?别踩坑!>>>

@JFinal 你好,想跟你请教个问题:

您好!我的 jfianl配置的是redis缓存

@Override
    public void configPlugin(Plugins plugins) {
        // 1.5 之后支持redis存储access_token、js_ticket,需要先启动RedisPlugin
//        RedisPlugin redisPlugin = new RedisPlugin("weixin_access_token", "192.168.0.105", 6379, 3600, "WebRedis123");
        RedisPlugin redisPlugin = new RedisPlugin("weixin_access_token", PropKit.get("web.redis.ip"), PropKit.getInt("web.redis.port"), PropKit.getInt("web.redis.expire"), PropKit.get("web.redis.password"));
        plugins.add(redisPlugin);
    }

然后采用的框架是springmvc 集成的 jfianl-weixin然后通过 spring restful 对外提供的接口 方法内容如下:   Map<String,String> resultMap = new HashMap<String,String>();
        String messageCode="0";
        String message ="获取token失败";
        String access_token = "";
        try {
            if (StringUtils.hasText(wxAccount)) {
                String wxDomainRelationship_json=redisTemplate.get("jfinal_weixin:"+wxAccount+"_WxDomainRelationship");
                WxDomainRelationship  wxDomainRelationship = new WxDomainRelationship();
                if(StringUtils.hasText(wxDomainRelationship_json)){
                    wxDomainRelationship = (WxDomainRelationship) JSONObject.toBean(JSONObject.fromObject(wxDomainRelationship_json),WxDomainRelationship.class);
                }else{
                    WxDomainRelationshipExample example = new WxDomainRelationshipExample();
                    example.createCriteria().andWxAccountEqualTo(wxAccount.trim());
                    List<WxDomainRelationship> accountlist =wxdomainrelationshipmanager.selectByExample(example);
                    if(accountlist.size()>0){
                        wxDomainRelationship = accountlist.get(0);
                        redisTemplate.set("jfinal_weixin:"+wxAccount+"_WxDomainRelationship",JSONObject.fromObject(wxDomainRelationship).toString());
                    }
                }
                if(StringUtils.hasText(wxDomainRelationship.getAppId())){
                    ApiConfig config = new ApiConfig();
                    config.setAppId(wxDomainRelationship.getAppId());
                    config.setAppSecret(wxDomainRelationship.getAppSecret());
                    config.setEncodingAesKey(wxDomainRelationship.getEncodingAesKey());
                    config.setEncryptMessage(false);
                }
                if(accessToken!=null){
                    config.setToken(accessToken.getAccessToken());
                }
                    ApiConfigKit.setThreadLocalApiConfig(config);
                }
                AccessToken accessToken = AccessTokenApi.getAccessToken();
                if(accessToken!=null&& StringUtils.hasText(accessToken.getAccessToken())){
                    access_token = accessToken.getAccessToken();
                    messageCode="1";
                    message="获取token成功";
                   
                }
            }
        }catch (Exception e){
            e.printStackTrace();
            messageCode="0";
            message="获取token失败";
        }
        resultMap.put("messageCode",messageCode);
        resultMap.put("message",message);
        resultMap.put("access_token",access_token);
        return resultMap;

我在访问后 发现 redis 里面确实有access_token  然后过几分钟再看,redis里面的值已经 变了 access_token已经被更新了,不知道什么原因引起的。

现在没有明白 jfianl-weixin 获取access_token 有什么自己自动获取的替换原来的access_token?

加载中
返回顶部
顶部