Skip to content

Commit 5c7448f

Browse files
committed
针对AccessToken,jsapi ticket添加强制刷新的功能
1 parent ae99bcd commit 5c7448f

File tree

4 files changed

+21
-10
lines changed

4 files changed

+21
-10
lines changed

weixin-java-cp/src/main/java/me/chanjar/weixin/cp/api/WxCpService.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -51,11 +51,11 @@ public interface WxCpService {
5151
* 程序员在非必要情况下尽量不要主动调用此方法
5252
* 详情请见: http://mp.weixin.qq.com/wiki/index.php?title=获取access_token
5353
* </pre>
54-
*
54+
* @param forceRefresh 强制刷新
5555
* @return
5656
* @throws me.chanjar.weixin.common.exception.WxErrorException
5757
*/
58-
public String getAccessToken() throws WxErrorException;
58+
public String getAccessToken(boolean forceRefresh) throws WxErrorException;
5959

6060
/**
6161
* <pre>

weixin-java-cp/src/main/java/me/chanjar/weixin/cp/api/WxCpServiceImpl.java

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,10 @@ public void userAuthenticated(String userId) throws WxErrorException {
7171
execute(new SimpleGetRequestExecutor(), url, null);
7272
}
7373

74-
public String getAccessToken() throws WxErrorException {
74+
public String getAccessToken(boolean forceRefresh) throws WxErrorException {
75+
if (forceRefresh) {
76+
wxCpConfigStorage.expireAccessToken();
77+
}
7578
if (wxCpConfigStorage.isAccessTokenExpired()) {
7679
synchronized (GLOBAL_ACCESS_TOKEN_REFRESH_LOCK) {
7780
if (wxCpConfigStorage.isAccessTokenExpired()) {
@@ -359,7 +362,7 @@ public String post(String url, String postData) throws WxErrorException {
359362
* @throws WxErrorException
360363
*/
361364
public <T, E> T execute(RequestExecutor<T, E> executor, String uri, E data) throws WxErrorException {
362-
String accessToken = getAccessToken();
365+
String accessToken = getAccessToken(false);
363366

364367
String uriWithAccessToken = uri;
365368
uriWithAccessToken += uri.indexOf('?') == -1 ? "?access_token=" + accessToken : "&access_token=" + accessToken;

weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/WxMpService.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,10 +40,11 @@ public interface WxMpService {
4040
4141
* 详情请见: http://mp.weixin.qq.com/wiki/index.php?title=获取access_token
4242
* </pre>
43+
* @param forceRefresh 强制刷新
4344
* @return
4445
* @throws me.chanjar.weixin.common.exception.WxErrorException
4546
*/
46-
public String getAccessToken() throws WxErrorException;
47+
public String getAccessToken(boolean forceRefresh) throws WxErrorException;
4748

4849
/**
4950
* <pre>
@@ -52,10 +53,11 @@ public interface WxMpService {
5253
*
5354
* 详情请见:http://mp.weixin.qq.com/wiki/7/aaa137b55fb2e0456bf8dd9148dd613f.html#.E9.99.84.E5.BD.951-JS-SDK.E4.BD.BF.E7.94.A8.E6.9D.83.E9.99.90.E7.AD.BE.E5.90.8D.E7.AE.97.E6.B3.95
5455
* </pre>
56+
* @param forceRefresh 强制刷新
5557
* @return
5658
* @throws WxErrorException
5759
*/
58-
public String getJsapiTicket() throws WxErrorException;
60+
public String getJsapiTicket(boolean forceRefresh) throws WxErrorException;
5961

6062
/**
6163
* <pre>

weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/WxMpServiceImpl.java

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,10 @@ public boolean checkSignature(String timestamp, String nonce, String signature)
6969
}
7070
}
7171

72-
public String getAccessToken() throws WxErrorException {
72+
public String getAccessToken(boolean forceRefresh) throws WxErrorException {
73+
if (forceRefresh) {
74+
wxMpConfigStorage.expireAccessToken();
75+
}
7376
if (wxMpConfigStorage.isAccessTokenExpired()) {
7477
synchronized (GLOBAL_ACCESS_TOKEN_REFRESH_LOCK) {
7578
if (wxMpConfigStorage.isAccessTokenExpired()) {
@@ -104,7 +107,10 @@ public String getAccessToken() throws WxErrorException {
104107
}
105108

106109

107-
public String getJsapiTicket() throws WxErrorException {
110+
public String getJsapiTicket(boolean forceRefresh) throws WxErrorException {
111+
if (forceRefresh) {
112+
wxMpConfigStorage.expireJsapiTicket();
113+
}
108114
if (wxMpConfigStorage.isJsapiTicketExpired()) {
109115
synchronized (GLOBAL_JSAPI_TICKET_REFRESH_LOCK) {
110116
if (wxMpConfigStorage.isJsapiTicketExpired()) {
@@ -122,7 +128,7 @@ public String getJsapiTicket() throws WxErrorException {
122128
}
123129

124130
public String createJsapiSignature(String timestamp, String noncestr, String url) throws WxErrorException {
125-
String jsapiTicket = getJsapiTicket();
131+
String jsapiTicket = getJsapiTicket(false);
126132
try {
127133
return SHA1.genWithAmple(
128134
"jsapi_ticket=" + jsapiTicket,
@@ -436,7 +442,7 @@ public String post(String url, String postData) throws WxErrorException {
436442
* @throws WxErrorException
437443
*/
438444
public <T, E> T execute(RequestExecutor<T, E> executor, String uri, E data) throws WxErrorException {
439-
String accessToken = getAccessToken();
445+
String accessToken = getAccessToken(false);
440446

441447
String uriWithAccessToken = uri;
442448
uriWithAccessToken += uri.indexOf('?') == -1 ? "?access_token=" + accessToken : "&access_token=" + accessToken;

0 commit comments

Comments
 (0)