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

dev
zengchenxi 6 months ago
parent 30c3ce450f
commit 3aa561325c

@ -40,6 +40,8 @@ public class ChanjetController {
private ChanjetSpi chanjetSpi; private ChanjetSpi chanjetSpi;
@Resource @Resource
private ChanjetManager chanjetManager; private ChanjetManager chanjetManager;
@Resource
private ChanjetTokenHolder chanjetTokenHolder;
/** /**
* OAuth * OAuth
@ -55,7 +57,7 @@ public class ChanjetController {
log.debug("接收授权码推送:{}", code); log.debug("接收授权码推送:{}", code);
GetTokenResponse response = chanjetSpi.getToken(code); GetTokenResponse response = chanjetSpi.getToken(code);
// 如成功 保存token // 如成功 保存token
ChanjetTokenHolder.setToken(response); chanjetTokenHolder.installToken(response);
return 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 com.chanko.yunxi.mes.module.biz.config.ChanjetOpenApiConfig;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.scheduling.annotation.Scheduled; import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
@ -27,23 +28,34 @@ public class ChanjetTokenHolder {
public static String REFRESH_TOKEN = null; public static String REFRESH_TOKEN = null;
public static String APP_KEY = null; public static String APP_KEY = null;
public static String APP_SECRET = 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 @Resource
private ChanjetSpi chanjetSpi; private ChanjetSpi chanjetSpi;
@Resource @Resource
private ChanjetOpenApiConfig chanjetOpenApiConfig; private ChanjetOpenApiConfig chanjetOpenApiConfig;
@Resource
private RedisTemplate<String,String> redisTemplate;
@PostConstruct @PostConstruct
public void init(){ public void init(){
APP_KEY = chanjetOpenApiConfig.getAppKey(); APP_KEY = chanjetOpenApiConfig.getAppKey();
APP_SECRET = chanjetOpenApiConfig.getAppSecret(); 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)); log.debug("ChanjetTokenHolder.setToken: {}", JSON.toJSONString(response));
if("200".equals(response.getCode())){ if("200".equals(response.getCode())){
TOKEN = response.getResult().getAccessToken(); setToken(response.getResult().getAccessToken());
REFRESH_TOKEN = response.getResult().getRefreshToken(); setRefreshToken(response.getResult().getRefreshToken());
}else{ }else{
log.error("ChanjetTokenHolder.setToken error: {}", JSON.toJSONString(response)); log.error("ChanjetTokenHolder.setToken error: {}", JSON.toJSONString(response));
} }
@ -58,18 +70,28 @@ public class ChanjetTokenHolder {
public void refreshToken() throws ChanjetApiException { public void refreshToken() throws ChanjetApiException {
if(!StringUtils.isEmpty(REFRESH_TOKEN)){ if(!StringUtils.isEmpty(REFRESH_TOKEN)){
RefreshTokenResponse refreshTokenResponse = chanjetSpi.refreshToken(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)); log.debug("ChanjetTokenHolder.refreshToken: {}", JSON.toJSONString(response));
if("200".equals(response.getCode())){ if("200".equals(response.getCode())){
TOKEN = response.getResult().getAccessToken(); setToken(response.getResult().getAccessToken());
REFRESH_TOKEN = response.getResult().getRefreshToken(); setRefreshToken(response.getResult().getRefreshToken());
}else{ }else{
log.error("ChanjetTokenHolder.refreshToken error: {}", JSON.toJSONString(response)); 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