微信第三方平台【四】使用授权码获取授权信息 authorization_info

授权之后,微信会返回auth_code,拼接在回调URL上

通过authCode【就是官方文档中的“authorization_code”】去获取授权信息

上代码:

public AuthorizationInfoResultDTO authInfoByAuthCode(String authCode) {
    log.info(START_GET_AUTH_INFO);
    AuthorizationInfoResultDTO authorizationInfoResultDTO = new AuthorizationInfoResultDTO();
    // 获取令牌【component_access_token】
    String accessToken = redisThird.getComponentAccessToken();
    // 使用授权码获取授权信息
    JSONObject jsonObject = new JSONObject();
    jsonObject.put(ModuleConstant.COMPONENT_APPID, componentAppId);
    jsonObject.put(ModuleConstant.AUTHORIZATION_CODE, authCode);
    String authInfo = HttpClientManager.getInstance().sendPostByJSON(“https://api.weixin.qq.com/cgi-bin/component/api_query_auth?component_access_token=COMPONENT_ACCESS_TOKEN”+ accessToken, JSON.toJSONString(jsonObject)).getData();
    HashMap<String,Map> hashMap = JSON.parseObject(authInfo, HashMap.class);
    Map map = hashMap.get(“authorization_info”);
    authorizationInfoResultDTO = ConvertUtils.mapToEntity(map, AuthorizationInfoResultDTO.class);
    String authAppId = authorizationInfoResultDTO.getAuthorizer_appid();
    log.info("授权信息:"+map);
    String expiresIn = authorizationInfoResultDTO.getExpires_in().toString();
    Date expiresInTime = this.countExpirationTime(expiresIn);
    //授权信息分为两张表,基础信息authorization_info,授权列表func_info
    // 1. 基础信息
    AuthorizationInfoFormDTO authInfoDTO = new AuthorizationInfoFormDTO();
    authInfoDTO.setAuthorizerAppid(authAppId);
    authInfoDTO.setAuthorizerAccessToken(authorizationInfoResultDTO.getAuthorizer_access_token());
    authInfoDTO.setAuthorizerRefreshToken(authorizationInfoResultDTO.getAuthorizer_refresh_token());
    authInfoDTO.setExpiresInTime(expiresInTime);
    List<Map> func_info = authorizationInfoResultDTO.getFunc_info();
    log.info("权限列表信息:"+func_info);
    String funcInfo = JSON.toJSONString(func_info);
    authInfoDTO.setFuncInfo(funcInfo);
    //先逻辑删除,在插入
    authorizationInfoDao.updateOldAuthorizationInfo(authAppId);
    authorizationInfoDao.insertAuthorizationInfo(authInfoDTO);
    // 授权信息放入缓存
    redisThird.setAuthInfo(authorizationInfoResultDTO);
    //authorizer_refresh_token 放入缓存
    redisThird.setAuthorizerRefreshToken(authInfoDTO);
    return authorizationInfoResultDTO;
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值