From 088a97221eeb659aa08d5d4b78f7ffb1e014152e Mon Sep 17 00:00:00 2001 From: Binary Wang Date: Fri, 18 Nov 2016 17:32:22 +0800 Subject: [PATCH] =?UTF-8?q?=E4=B8=BAWxMpConfigStorage=E6=8E=A5=E5=8F=A3?= =?UTF-8?q?=E5=A2=9E=E5=8A=A0autoRefreshToken=E6=96=B9=E6=B3=95=EF=BC=8C?= =?UTF-8?q?=E4=BB=A5=E6=96=B9=E4=BE=BF=E5=AE=A2=E6=88=B7=E7=AB=AF=E8=AE=BE?= =?UTF-8?q?=E7=BD=AE=E6=98=AF=E5=90=A6=E8=87=AA=E5=8A=A8=E5=88=B7=E6=96=B0?= =?UTF-8?q?token.=20for=20#77?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/me/chanjar/weixin/mp/api/WxMpConfigStorage.java | 5 +++++ .../me/chanjar/weixin/mp/api/WxMpInMemoryConfigStorage.java | 5 +++++ .../java/me/chanjar/weixin/mp/api/impl/WxMpServiceImpl.java | 6 +++++- 3 files changed, 15 insertions(+), 1 deletion(-) diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/WxMpConfigStorage.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/WxMpConfigStorage.java index 0852cae2..67d39a78 100644 --- a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/WxMpConfigStorage.java +++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/WxMpConfigStorage.java @@ -100,4 +100,9 @@ public interface WxMpConfigStorage { * @return ApacheHttpClientBuilder */ ApacheHttpClientBuilder getApacheHttpClientBuilder(); + + /** + * 是否自动刷新token + */ + boolean autoRefreshToken(); } diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/WxMpInMemoryConfigStorage.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/WxMpInMemoryConfigStorage.java index d497261e..bb4a2985 100644 --- a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/WxMpInMemoryConfigStorage.java +++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/WxMpInMemoryConfigStorage.java @@ -270,6 +270,11 @@ public class WxMpInMemoryConfigStorage implements WxMpConfigStorage { return this.apacheHttpClientBuilder; } + @Override + public boolean autoRefreshToken() { + return true; + } + public void setApacheHttpClientBuilder(ApacheHttpClientBuilder apacheHttpClientBuilder) { this.apacheHttpClientBuilder = apacheHttpClientBuilder; } diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/impl/WxMpServiceImpl.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/impl/WxMpServiceImpl.java index 87cf7397..6a6044ab 100644 --- a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/impl/WxMpServiceImpl.java +++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/impl/WxMpServiceImpl.java @@ -101,6 +101,7 @@ public class WxMpServiceImpl implements WxMpService { if (forceRefresh) { this.configStorage.expireAccessToken(); } + if (this.configStorage.isAccessTokenExpired()) { synchronized (this.globalAccessTokenRefreshLock) { if (this.configStorage.isAccessTokenExpired()) { @@ -411,8 +412,11 @@ public class WxMpServiceImpl implements WxMpService { if (error.getErrorCode() == 42001 || error.getErrorCode() == 40001) { // 强制设置wxMpConfigStorage它的access token过期了,这样在下一次请求里就会刷新access token this.configStorage.expireAccessToken(); - return this.execute(executor, uri, data); + if(this.configStorage.autoRefreshToken()){ + return this.execute(executor, uri, data); + } } + if (error.getErrorCode() != 0) { this.log.error("\n[URL]: {}\n[PARAMS]: {}\n[RESPONSE]: {}", uri, data, error);