微信第三方平台【二】获取令牌 component_access_token

第二步,获取第三方平台的 coponent_access_token

令牌的获取是有限制的,每个令牌的有效期为 2 小时,请自行做好令牌的管理,在令牌快过期时,重新调用接口获取。

令牌需要保存【我redis存了一份,mysql存了一份,后边需要用,直接redis取】

请求地址:

POST https://api.weixin.qq.com/cgi-bin/component/api_component_token

 

上代码:

public void getComponentAccessToken(String accessTokenCountFlag) {
    Map<String, String> reMap;
    //查询马上超时的accessToken数量
    Integer tokenCount = componentAccessTokenDao.selectWillOverTokenCount();
    if ((tokenCount > NumConstant.ZERO && accessTokenCountFlag.equals(ModuleConstant.ACCOUNT_TOKEN_FLAG_TWO)) || accessTokenCountFlag.equals(ModuleConstant.ACCOUNT_TOKEN_FLAG_ONE)) {
        log.info(String.format(EXIST_UPCOMING_EXPIRED));
        String componentVerifyTicket = redisThird.getComponentVerifyTicket();
        JSONObject jsonObject = new JSONObject();
        jsonObject.put(ModuleConstant.COMPONENT_APPID, componentAppId);
        jsonObject.put(ModuleConstant.COMPONENT_APPSECRET, appSecret);
        jsonObject.put(ModuleConstant.TICKET_UNDERLINE_KEY, componentVerifyTicket);
        log.info(String.format(ThirdRunTimeInfoConstant.COMPONENT_ACCESS_TOKEN,componentVerifyTicket));
        String post = HttpClientManager.getInstance().sendPostByJSON(“https://api.weixin.qq.com/cgi-bin/component/api_component_token”, JSON.toJSONString(jsonObject)).getData();
        Map hashMap = JSON.parseObject(post, Map.class);
        if (!hashMap.containsKey(“errmsg”)) {
            String componentAccessToken = hashMap.get("component_access_token").toString();
            Integer expiresIn = (Integer) hashMap.get("expires_in");
            Date expiresInTime = this.countExpirationTime(expiresIn.toString());
            if (StringUtils.isNotEmpty(componentAccessToken)) {
                //令牌信息存DB
                ComponentAccessTokenFormDTO formDTO = new ComponentAccessTokenFormDTO();
                formDTO.setComponentAccessToken(componentAccessToken);
                formDTO.setExpiresInTime(expiresInTime);
                //先删,在插入
                log.info(ThirdRunTimeInfoConstant.START_DELETE_COMPONENT_ACCESS_TOKEN);
                componentAccessTokenDao.deleteOldComponentAccessToken();
                componentAccessTokenDao.insertComponentAccessToken(formDTO);
                //存缓存
                redisThird.setComponentAccessToken(componentAccessToken);
            } else {
                throw new RenException(ThirdRunTimeInfoConstant.FAILURE_ACCESS_TOKEN);
            }
            log.info(ThirdRunTimeInfoConstant.SUCCESS_ACCESS_TOKEN);
        }
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值