This commit is contained in:
van
2026-03-23 23:54:48 +08:00
parent b37865a676
commit 6ecedf91b3
2 changed files with 25 additions and 3 deletions

View File

@@ -23,9 +23,13 @@ public class KdocsTokenInfo implements Serializable {
} }
public boolean isExpired() { public boolean isExpired() {
if (expiresIn == null || createTime == null) { if (accessToken == null || accessToken.isEmpty()) {
return true; return true;
} }
// 部分 OAuth 响应不返回 expires_in若按 null 判过期会导致前端误判「未授权」
if (expiresIn == null || createTime == null) {
return false;
}
long expireTime = createTime + (expiresIn * 1000L); long expireTime = createTime + (expiresIn * 1000L);
return System.currentTimeMillis() >= (expireTime - 5 * 60 * 1000L); return System.currentTimeMillis() >= (expireTime - 5 * 60 * 1000L);
} }

View File

@@ -76,7 +76,14 @@ public class KdocsOAuthServiceImpl implements IKdocsOAuthService {
KdocsTokenInfo info = new KdocsTokenInfo(); KdocsTokenInfo info = new KdocsTokenInfo();
info.setAccessToken(data.getString("access_token")); info.setAccessToken(data.getString("access_token"));
info.setRefreshToken(data.getString("refresh_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; String openId = null;
try { try {
@@ -109,7 +116,14 @@ public class KdocsOAuthServiceImpl implements IKdocsOAuthService {
KdocsTokenInfo info = new KdocsTokenInfo(); KdocsTokenInfo info = new KdocsTokenInfo();
info.setAccessToken(data.getString("access_token")); info.setAccessToken(data.getString("access_token"));
info.setRefreshToken(data.getString("refresh_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); info.setUserId(existingUserId);
return info; return info;
} }
@@ -117,6 +131,10 @@ public class KdocsOAuthServiceImpl implements IKdocsOAuthService {
@Override @Override
public KdocsTokenInfo getCurrentToken() { public KdocsTokenInfo getCurrentToken() {
try { try {
KdocsTokenInfo direct = redisCache.getCacheObject(TOKEN_KEY_PREFIX + "default_user");
if (direct != null) {
return direct;
}
String pattern = TOKEN_KEY_PREFIX + "*"; String pattern = TOKEN_KEY_PREFIX + "*";
Collection<String> keys = redisCache.keys(pattern); Collection<String> keys = redisCache.keys(pattern);
if (keys != null) { if (keys != null) {