创建AccessToken工具类



public class CreateAccessTokenUtil {
private static final Logger logger = Logger.getLogger(CreateAccessTokenUtil.class);
/**
* 根据appId和appSecret 生成access_token
* @param appId
* @param appSecret
* @return
*/
public static synchronized String createAccessToken(String appId,String appSecret){
String access_token =null;
try {
//判断对列中是否存在 
List<AccessToken> accessTokenList = Constant.accessTokenList;
boolean isExists = false;
AccessToken theExistsToken = null;//存在的这个对象
for(AccessToken aToken: accessTokenList ){
if(appId.equals(aToken.getAppId()) && appSecret.equals(aToken.getAppSecret())){
theExistsToken = aToken;
isExists = true;
break;
}
}
//已存在
if(isExists){
Date now = new Date();
//判断是否过期
if(now.getTime()-theExistsToken.getCreateTime().getTime()>Constant.WECHAT_EXPIRESIN*1000){
//已过期,重新获取
AccessToken newAccessToken = CreateAccessTokenUtil.getAccessToken(appId, appSecret);
if(newAccessToken!=null){
access_token = newAccessToken.getAccessToken();
Constant.accessTokenList.remove(theExistsToken);
Constant.accessTokenList.add(newAccessToken);
}
}else{
//未过期,直接取值
access_token = theExistsToken.getAccessToken();
}
}else{
//不存在 直接获取token
AccessToken newAccessToken = CreateAccessTokenUtil.getAccessToken(appId, appSecret);
if(newAccessToken!=null && !StringUtil.isEmpty(newAccessToken.getAccessToken())){
access_token = newAccessToken.getAccessToken();
Constant.accessTokenList.add(newAccessToken);
}
}
} catch (Exception e) {
e.printStackTrace();
}

return access_token;
}


/**
* 查询AccessToken 返回对象
* @param appId
* @param appSecret
* @return
*/
public static AccessToken getAccessToken(String appId, String appSecret){
String requestUrl = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=SECRET";
requestUrl =  requestUrl.replace("APPID", appId);
requestUrl =  requestUrl.replace("SECRET", appSecret);

AccessToken accessToken = null;
logger.info("getAccessToken===requestUrl===="+requestUrl);
JSONObject jsonObject = WeixinUtil.httpRequest(requestUrl, "GET", null);
if (jsonObject != null){
try {
logger.info("getAccessToken===jsonObject===="+jsonObject.toString());
String access_token = jsonObject.getString("access_token");
String expires_in = jsonObject.getString("expires_in");
accessToken = new AccessToken();
accessToken.setAppId(appId);
accessToken.setAppSecret(appSecret);
accessToken.setAccessToken(access_token);
accessToken.setExpiresIn(Integer.parseInt(expires_in));
accessToken.setCreateTime(new Date());
} catch (Exception e) {
String errCode = jsonObject.getString("errcode");
String errMsg = jsonObject.getString("errmsg");
logger.error("获取token失败errcode:{" + errCode + "} errmsg{" + errMsg + "}");
}
}
return accessToken;
}

}

猜你喜欢

转载自blog.csdn.net/shaolin_yipan/article/details/78561836