【需求】完善token获取类,只需一次通过授权码获取

dev
zengchenxi 6 months ago
parent 30c3ce450f
commit 3aa561325c

@ -40,6 +40,8 @@ public class ChanjetController {
private ChanjetSpi chanjetSpi;
@Resource
private ChanjetManager chanjetManager;
@Resource
private ChanjetTokenHolder chanjetTokenHolder;
/**
* OAuth
@ -55,7 +57,7 @@ public class ChanjetController {
log.debug("接收授权码推送:{}", code);
GetTokenResponse response = chanjetSpi.getToken(code);
// 如成功 保存token
ChanjetTokenHolder.setToken(response);
chanjetTokenHolder.installToken(response);
return response;
}

@ -7,6 +7,7 @@ import com.chanjet.openapi.sdk.java.response.RefreshTokenResponse;
import com.chanko.yunxi.mes.module.biz.config.ChanjetOpenApiConfig;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
@ -27,23 +28,34 @@ public class ChanjetTokenHolder {
public static String REFRESH_TOKEN = null;
public static String APP_KEY = null;
public static String APP_SECRET = null;
public static final String MAJOYS_CHANJET_TOKEN_KEY = "MAJOYS_CHANJET_TOKEN_KEY";
public static final String MAJOYS_CHANJET_REFRESH_TOKEN_KEY = "MAJOYS_CHANJET_REFRESH_TOKEN_KEY";
@Resource
private ChanjetSpi chanjetSpi;
@Resource
private ChanjetOpenApiConfig chanjetOpenApiConfig;
@Resource
private RedisTemplate<String,String> redisTemplate;
@PostConstruct
public void init(){
APP_KEY = chanjetOpenApiConfig.getAppKey();
APP_SECRET = chanjetOpenApiConfig.getAppSecret();
if(redisTemplate.hasKey(MAJOYS_CHANJET_TOKEN_KEY)){
TOKEN = redisTemplate.opsForValue().get(MAJOYS_CHANJET_TOKEN_KEY);
}
if(redisTemplate.hasKey(MAJOYS_CHANJET_REFRESH_TOKEN_KEY)){
REFRESH_TOKEN = redisTemplate.opsForValue().get(MAJOYS_CHANJET_REFRESH_TOKEN_KEY);
}
}
public static void setToken(GetTokenResponse response) {
public void installToken(GetTokenResponse response) {
log.debug("ChanjetTokenHolder.setToken: {}", JSON.toJSONString(response));
if("200".equals(response.getCode())){
TOKEN = response.getResult().getAccessToken();
REFRESH_TOKEN = response.getResult().getRefreshToken();
setToken(response.getResult().getAccessToken());
setRefreshToken(response.getResult().getRefreshToken());
}else{
log.error("ChanjetTokenHolder.setToken error: {}", JSON.toJSONString(response));
}
@ -58,18 +70,28 @@ public class ChanjetTokenHolder {
public void refreshToken() throws ChanjetApiException {
if(!StringUtils.isEmpty(REFRESH_TOKEN)){
RefreshTokenResponse refreshTokenResponse = chanjetSpi.refreshToken(REFRESH_TOKEN);
setToken(refreshTokenResponse);
installToken(refreshTokenResponse);
}
}
private void setToken(RefreshTokenResponse response) {
private void installToken(RefreshTokenResponse response) {
log.debug("ChanjetTokenHolder.refreshToken: {}", JSON.toJSONString(response));
if("200".equals(response.getCode())){
TOKEN = response.getResult().getAccessToken();
REFRESH_TOKEN = response.getResult().getRefreshToken();
setToken(response.getResult().getAccessToken());
setRefreshToken(response.getResult().getRefreshToken());
}else{
log.error("ChanjetTokenHolder.refreshToken error: {}", JSON.toJSONString(response));
}
}
public void setToken(String token){
TOKEN = token;
redisTemplate.opsForValue().set(MAJOYS_CHANJET_TOKEN_KEY, token);
}
private void setRefreshToken(String refreshToken) {
REFRESH_TOKEN = refreshToken;
redisTemplate.opsForValue().set(MAJOYS_CHANJET_REFRESH_TOKEN_KEY, refreshToken);
}
}

Loading…
Cancel
Save