1
This commit is contained in:
@@ -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);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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) {
|
||||||
|
|||||||
Reference in New Issue
Block a user