mirror of
				https://gitee.com/binary/weixin-java-tools.git
				synced 2025-10-31 10:38:42 +08:00 
			
		
		
		
	针对AccessToken,jsapi ticket添加强制刷新的功能
This commit is contained in:
		| @ -51,11 +51,11 @@ public interface WxCpService { | |||||||
|    * 程序员在非必要情况下尽量不要主动调用此方法 |    * 程序员在非必要情况下尽量不要主动调用此方法 | ||||||
|    * 详情请见: http://mp.weixin.qq.com/wiki/index.php?title=获取access_token |    * 详情请见: http://mp.weixin.qq.com/wiki/index.php?title=获取access_token | ||||||
|    * </pre> |    * </pre> | ||||||
|    * |    * @param forceRefresh 强制刷新 | ||||||
|    * @return |    * @return | ||||||
|    * @throws me.chanjar.weixin.common.exception.WxErrorException |    * @throws me.chanjar.weixin.common.exception.WxErrorException | ||||||
|    */ |    */ | ||||||
|   public String getAccessToken() throws WxErrorException; |   public String getAccessToken(boolean forceRefresh) throws WxErrorException; | ||||||
|  |  | ||||||
|   /** |   /** | ||||||
|    * <pre> |    * <pre> | ||||||
|  | |||||||
| @ -71,7 +71,10 @@ public class WxCpServiceImpl implements WxCpService { | |||||||
|     execute(new SimpleGetRequestExecutor(), url, null); |     execute(new SimpleGetRequestExecutor(), url, null); | ||||||
|   } |   } | ||||||
|  |  | ||||||
|   public String getAccessToken() throws WxErrorException { |   public String getAccessToken(boolean forceRefresh) throws WxErrorException { | ||||||
|  |     if (forceRefresh) { | ||||||
|  |       wxCpConfigStorage.expireAccessToken(); | ||||||
|  |     } | ||||||
|     if (wxCpConfigStorage.isAccessTokenExpired()) { |     if (wxCpConfigStorage.isAccessTokenExpired()) { | ||||||
|       synchronized (GLOBAL_ACCESS_TOKEN_REFRESH_LOCK) { |       synchronized (GLOBAL_ACCESS_TOKEN_REFRESH_LOCK) { | ||||||
|         if (wxCpConfigStorage.isAccessTokenExpired()) { |         if (wxCpConfigStorage.isAccessTokenExpired()) { | ||||||
| @ -359,7 +362,7 @@ public class WxCpServiceImpl implements WxCpService { | |||||||
|    * @throws WxErrorException |    * @throws WxErrorException | ||||||
|    */ |    */ | ||||||
|   public <T, E> T execute(RequestExecutor<T, E> executor, String uri, E data) throws WxErrorException { |   public <T, E> T execute(RequestExecutor<T, E> executor, String uri, E data) throws WxErrorException { | ||||||
|     String accessToken = getAccessToken(); |     String accessToken = getAccessToken(false); | ||||||
|  |  | ||||||
|     String uriWithAccessToken = uri; |     String uriWithAccessToken = uri; | ||||||
|     uriWithAccessToken += uri.indexOf('?') == -1 ? "?access_token=" + accessToken : "&access_token=" + accessToken; |     uriWithAccessToken += uri.indexOf('?') == -1 ? "?access_token=" + accessToken : "&access_token=" + accessToken; | ||||||
|  | |||||||
| @ -40,10 +40,11 @@ public interface WxMpService { | |||||||
|  |  | ||||||
|    * 详情请见: http://mp.weixin.qq.com/wiki/index.php?title=获取access_token |    * 详情请见: http://mp.weixin.qq.com/wiki/index.php?title=获取access_token | ||||||
|    * </pre> |    * </pre> | ||||||
|  |    * @param forceRefresh 强制刷新 | ||||||
|    * @return |    * @return | ||||||
|    * @throws me.chanjar.weixin.common.exception.WxErrorException |    * @throws me.chanjar.weixin.common.exception.WxErrorException | ||||||
|    */ |    */ | ||||||
|   public String getAccessToken() throws WxErrorException; |   public String getAccessToken(boolean forceRefresh) throws WxErrorException; | ||||||
|  |  | ||||||
|   /** |   /** | ||||||
|    * <pre> |    * <pre> | ||||||
| @ -52,10 +53,11 @@ public interface WxMpService { | |||||||
|    * |    * | ||||||
|    * 详情请见: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 |    * 详情请见: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 | ||||||
|    * </pre> |    * </pre> | ||||||
|  |    * @param forceRefresh 强制刷新 | ||||||
|    * @return |    * @return | ||||||
|    * @throws WxErrorException |    * @throws WxErrorException | ||||||
|    */ |    */ | ||||||
|   public String getJsapiTicket() throws WxErrorException; |   public String getJsapiTicket(boolean forceRefresh) throws WxErrorException; | ||||||
|  |  | ||||||
|   /** |   /** | ||||||
|    * <pre> |    * <pre> | ||||||
|  | |||||||
| @ -69,7 +69,10 @@ public class WxMpServiceImpl implements WxMpService { | |||||||
|     } |     } | ||||||
|   } |   } | ||||||
|    |    | ||||||
|   public String getAccessToken() throws WxErrorException { |   public String getAccessToken(boolean forceRefresh) throws WxErrorException { | ||||||
|  |     if (forceRefresh) { | ||||||
|  |       wxMpConfigStorage.expireAccessToken(); | ||||||
|  |     } | ||||||
|     if (wxMpConfigStorage.isAccessTokenExpired()) { |     if (wxMpConfigStorage.isAccessTokenExpired()) { | ||||||
|       synchronized (GLOBAL_ACCESS_TOKEN_REFRESH_LOCK) { |       synchronized (GLOBAL_ACCESS_TOKEN_REFRESH_LOCK) { | ||||||
|         if (wxMpConfigStorage.isAccessTokenExpired()) { |         if (wxMpConfigStorage.isAccessTokenExpired()) { | ||||||
| @ -104,7 +107,10 @@ public class WxMpServiceImpl implements WxMpService { | |||||||
|   } |   } | ||||||
|  |  | ||||||
|  |  | ||||||
|   public String getJsapiTicket() throws WxErrorException { |   public String getJsapiTicket(boolean forceRefresh) throws WxErrorException { | ||||||
|  |     if (forceRefresh) { | ||||||
|  |       wxMpConfigStorage.expireJsapiTicket(); | ||||||
|  |     } | ||||||
|     if (wxMpConfigStorage.isJsapiTicketExpired()) { |     if (wxMpConfigStorage.isJsapiTicketExpired()) { | ||||||
|       synchronized (GLOBAL_JSAPI_TICKET_REFRESH_LOCK) { |       synchronized (GLOBAL_JSAPI_TICKET_REFRESH_LOCK) { | ||||||
|         if (wxMpConfigStorage.isJsapiTicketExpired()) { |         if (wxMpConfigStorage.isJsapiTicketExpired()) { | ||||||
| @ -122,7 +128,7 @@ public class WxMpServiceImpl implements WxMpService { | |||||||
|   } |   } | ||||||
|  |  | ||||||
|   public String createJsapiSignature(String timestamp, String noncestr, String url) throws WxErrorException { |   public String createJsapiSignature(String timestamp, String noncestr, String url) throws WxErrorException { | ||||||
|     String jsapiTicket = getJsapiTicket(); |     String jsapiTicket = getJsapiTicket(false); | ||||||
|     try { |     try { | ||||||
|       return SHA1.genWithAmple( |       return SHA1.genWithAmple( | ||||||
|           "jsapi_ticket=" + jsapiTicket, |           "jsapi_ticket=" + jsapiTicket, | ||||||
| @ -436,7 +442,7 @@ public class WxMpServiceImpl implements WxMpService { | |||||||
|    * @throws WxErrorException |    * @throws WxErrorException | ||||||
|    */ |    */ | ||||||
|   public <T, E> T execute(RequestExecutor<T, E> executor, String uri, E data) throws WxErrorException { |   public <T, E> T execute(RequestExecutor<T, E> executor, String uri, E data) throws WxErrorException { | ||||||
|     String accessToken = getAccessToken(); |     String accessToken = getAccessToken(false); | ||||||
|      |      | ||||||
|     String uriWithAccessToken = uri; |     String uriWithAccessToken = uri; | ||||||
|     uriWithAccessToken += uri.indexOf('?') == -1 ? "?access_token=" + accessToken : "&access_token=" + accessToken; |     uriWithAccessToken += uri.indexOf('?') == -1 ? "?access_token=" + accessToken : "&access_token=" + accessToken; | ||||||
|  | |||||||
		Reference in New Issue
	
	Block a user
	 Daniel Qian
					Daniel Qian