🆕 #1474 企业微信新增客户联系「联系我」管理接口 修正 / #1590 开放平台刷新AccessToken同步更新RefreshToken

* #1474 新增客户联系「联系我」管理接口

* fix #1590 提及的me.chanjar.weixin.open.api.impl.WxOpenComponentServiceImpl#getAuthorizerAccessToken()刷新AccessToken后没有同步对应的refreshToken

* 补充 me.chanjar.weixin.open.api.impl.WxOpenInMemoryConfigStorage#updateToken 方法对 expireInSeconds 边界判断
This commit is contained in:
爱因斯唐
2020-07-21 10:23:56 +08:00
committed by GitHub
parent 04fb35d1ba
commit 0758049ea9
12 changed files with 563 additions and 19 deletions

View File

@@ -208,6 +208,13 @@ public interface WxOpenConfigStorage {
*/
void setAuthorizerRefreshToken(String appId, String authorizerRefreshToken);
/**
* setAuthorizerRefreshToken(String appId, String authorizerRefreshToken) 方法重载方法
* @param appId the app id
* @param authorizerRefreshToken the authorizer refresh token
*/
void updateAuthorizerRefreshToken(String appId, String authorizerRefreshToken);
/**
* Gets authorizer access token.
*

View File

@@ -311,7 +311,7 @@ public class WxOpenComponentServiceImpl implements WxOpenComponentService {
authorizationInfo.getAuthorizerAccessToken(), authorizationInfo.getExpiresIn());
}
if (authorizationInfo.getAuthorizerRefreshToken() != null) {
getWxOpenConfigStorage().setAuthorizerRefreshToken(authorizationInfo.getAuthorizerAppid(), authorizationInfo.getAuthorizerRefreshToken());
getWxOpenConfigStorage().updateAuthorizerRefreshToken(authorizationInfo.getAuthorizerAppid(), authorizationInfo.getAuthorizerRefreshToken());
}
return queryAuth;
}
@@ -340,7 +340,7 @@ public class WxOpenComponentServiceImpl implements WxOpenComponentService {
String authorizerAppid = data.get("authorizer_appid");
String refreshToken = data.get("refresh_token");
if (authorizerAppid != null && refreshToken != null) {
this.getWxOpenConfigStorage().setAuthorizerRefreshToken(authorizerAppid, refreshToken);
this.getWxOpenConfigStorage().updateAuthorizerRefreshToken(authorizerAppid, refreshToken);
}
}
}
@@ -391,6 +391,7 @@ public class WxOpenComponentServiceImpl implements WxOpenComponentService {
WxOpenAuthorizerAccessToken wxOpenAuthorizerAccessToken = WxOpenAuthorizerAccessToken.fromJson(responseContent);
config.updateAuthorizerAccessToken(appId, wxOpenAuthorizerAccessToken);
config.updateAuthorizerRefreshToken(appId,wxOpenAuthorizerAccessToken.getAuthorizerRefreshToken());
return config.getAuthorizerAccessToken(appId);
} catch (InterruptedException e) {
throw new RuntimeException(e);

View File

@@ -142,7 +142,7 @@ public class WxOpenInMemoryConfigStorage implements WxOpenConfigStorage {
map.put(key, token);
}
token.token = tokenString;
if (expiresInSeconds != null) {
if (expiresInSeconds != null && expiresInSeconds != -1) {
token.expiresTime = System.currentTimeMillis() + (expiresInSeconds - 200) * 1000L;
}
}
@@ -157,6 +157,11 @@ public class WxOpenInMemoryConfigStorage implements WxOpenConfigStorage {
updateToken(authorizerRefreshTokens, appId, authorizerRefreshToken, null);
}
@Override
public void updateAuthorizerRefreshToken(String appId, String authorizerRefreshToken) {
this.setAuthorizerRefreshToken(appId, authorizerRefreshToken);
}
@Override
public String getAuthorizerAccessToken(String appId) {
return getTokenString(authorizerAccessTokens, appId);

View File

@@ -1,5 +1,6 @@
package me.chanjar.weixin.open.bean;
import lombok.Data;
import me.chanjar.weixin.open.util.json.WxOpenGsonBuilder;
import java.io.Serializable;
@@ -7,30 +8,17 @@ import java.io.Serializable;
/**
* @author <a href="https://github.com/007gzs">007</a>
*/
@Data
public class WxOpenAuthorizerAccessToken implements Serializable {
private static final long serialVersionUID = -4069745419280727420L;
private String authorizerAccessToken;
private String authorizerRefreshToken;
private int expiresIn = -1;
public static WxOpenAuthorizerAccessToken fromJson(String json) {
return WxOpenGsonBuilder.create().fromJson(json, WxOpenAuthorizerAccessToken.class);
}
public String getAuthorizerAccessToken() {
return authorizerAccessToken;
}
public void setAuthorizerAccessToken(String authorizerAccessToken) {
this.authorizerAccessToken = authorizerAccessToken;
}
public int getExpiresIn() {
return expiresIn;
}
public void setExpiresIn(int expiresIn) {
this.expiresIn = expiresIn;
}
}

View File

@@ -15,6 +15,7 @@ public class WxOpenAuthorizerAccessTokenGsonAdapter implements JsonDeserializer<
WxOpenAuthorizerAccessToken authorizerAccessToken = new WxOpenAuthorizerAccessToken();
JsonObject jsonObject = jsonElement.getAsJsonObject();
authorizerAccessToken.setAuthorizerAccessToken(GsonHelper.getString(jsonObject, "authorizer_access_token"));
authorizerAccessToken.setAuthorizerRefreshToken(GsonHelper.getString(jsonObject, "authorizer_refresh_token"));
authorizerAccessToken.setExpiresIn(GsonHelper.getPrimitiveInteger(jsonObject, "expires_in"));
return authorizerAccessToken;
}