1
This commit is contained in:
@@ -23,9 +23,13 @@ public class KdocsTokenInfo implements Serializable {
|
||||
}
|
||||
|
||||
public boolean isExpired() {
|
||||
if (expiresIn == null || createTime == null) {
|
||||
if (accessToken == null || accessToken.isEmpty()) {
|
||||
return true;
|
||||
}
|
||||
// 部分 OAuth 响应不返回 expires_in;若按 null 判过期会导致前端误判「未授权」
|
||||
if (expiresIn == null || createTime == null) {
|
||||
return false;
|
||||
}
|
||||
long expireTime = createTime + (expiresIn * 1000L);
|
||||
return System.currentTimeMillis() >= (expireTime - 5 * 60 * 1000L);
|
||||
}
|
||||
|
||||
@@ -76,7 +76,14 @@ public class KdocsOAuthServiceImpl implements IKdocsOAuthService {
|
||||
KdocsTokenInfo info = new KdocsTokenInfo();
|
||||
info.setAccessToken(data.getString("access_token"));
|
||||
info.setRefreshToken(data.getString("refresh_token"));
|
||||
info.setExpiresIn(data.getInteger("expires_in"));
|
||||
Integer exp = data.getInteger("expires_in");
|
||||
if (exp == null && data.get("expires_in") != null) {
|
||||
try {
|
||||
exp = Integer.parseInt(data.get("expires_in").toString());
|
||||
} catch (NumberFormatException ignored) {
|
||||
}
|
||||
}
|
||||
info.setExpiresIn(exp != null ? exp : 7200);
|
||||
|
||||
String openId = null;
|
||||
try {
|
||||
@@ -109,7 +116,14 @@ public class KdocsOAuthServiceImpl implements IKdocsOAuthService {
|
||||
KdocsTokenInfo info = new KdocsTokenInfo();
|
||||
info.setAccessToken(data.getString("access_token"));
|
||||
info.setRefreshToken(data.getString("refresh_token"));
|
||||
info.setExpiresIn(data.getInteger("expires_in"));
|
||||
Integer exp = data.getInteger("expires_in");
|
||||
if (exp == null && data.get("expires_in") != null) {
|
||||
try {
|
||||
exp = Integer.parseInt(data.get("expires_in").toString());
|
||||
} catch (NumberFormatException ignored) {
|
||||
}
|
||||
}
|
||||
info.setExpiresIn(exp != null ? exp : 7200);
|
||||
info.setUserId(existingUserId);
|
||||
return info;
|
||||
}
|
||||
@@ -117,6 +131,10 @@ public class KdocsOAuthServiceImpl implements IKdocsOAuthService {
|
||||
@Override
|
||||
public KdocsTokenInfo getCurrentToken() {
|
||||
try {
|
||||
KdocsTokenInfo direct = redisCache.getCacheObject(TOKEN_KEY_PREFIX + "default_user");
|
||||
if (direct != null) {
|
||||
return direct;
|
||||
}
|
||||
String pattern = TOKEN_KEY_PREFIX + "*";
|
||||
Collection<String> keys = redisCache.keys(pattern);
|
||||
if (keys != null) {
|
||||
|
||||
Reference in New Issue
Block a user