jfinal-weixin 最新版,及最新测试代码.
package com.jfinal.weixin.sdk.api; import java.io.IOException; /** * AccessTokenApi 测试 */ public class AccessTokenApiTest { public static void main(String[] args) throws IOException { ApiConfig ac = new ApiConfig(); ac.setAppId("wx5d6604a5d4cfaee93");// 这是一个错误的appid ac.setAppSecret("ff7971a6fd9dc409d185e81c63025799");// 密码 // ac.setAppId("wx9803d1188fa5fbda"); // ac.setAppSecret("db859c968763c582794e7c3d003c3d87"); ApiConfigKit.setThreadLocalApiConfig(ac); AccessToken at = AccessTokenApi.getAccessToken(); System.out.println(at.getJson()); if (at.isAvailable()) { System.out.println("access_token : " + at.getAccessToken());// token值 System.out.println("getExpiresIn : " + at.getExpiresIn());// 超时时间,单位为秒 System.out.println("getJson : " + at.getJson()); } else { System.out.println(at.getErrorCode() + " : " + at.getErrorMsg()); } } }
然后我断点看一下执行过程.
1. com.jfinal.weixin.sdk.api.AccessTokenApi
getAccessToken会先执行.然后getAccessToken获取到的值无效的话,再去执行refreshAccessToken这个方法.
2.refreshAccessToken 方法原意是重试3次. 就放弃. 但问题是
String json = HttpKit.get(url, queryParas);
result = new AccessToken(json);// 此处代码里面封装了一个apiresult对象.而ApiResult里面有可能会调用refreshAccessTokenIfInvalid方法.然后refreshAccessTokenIfInvalid这个方法又会有机会重新执行
refreshAccessToken .这样死循环就重现了
问题重现很容易,在测试代码里面,把appid输错一个数字就出现了.
请各位看一下,这是不是一个问题?或者有什么好的方法规避一下?
@JFinal
已经修改,感谢反馈!######好像有这个问题######
刚看了一下代码,应该不会有这个问题,refreshAccessToken() 方法中并没有 ApiResult 的操作,AccessToken 中也没有 ApiResult 的操作,所以如果 access token 获取失败三次调用流程就会终止。
可能是其它原因引起的问题,希望楼主调试一下程序,找到原因后来此再分享一下。
######
//截图重新压缩后,有点模糊了.
james,就是上面那个执行流程形成了回路.
不知道把刷新token的方法
void com.jfinal.weixin.sdk.api.ApiResult.refreshAccessTokenIfInvalid()
com.jfinal.weixin.sdk.api.AccessToken
@SuppressWarnings("unchecked") public ApiResult(String jsonStr) { this.json = jsonStr; try { Map<String, Object> temp = JsonUtils.decode(jsonStr, Map.class); this.attrs = temp; // 如果需要,刷新token //这里注释掉就OK. //refreshAccessTokenIfInvalid(); } catch (Exception e) { throw new RuntimeException(e); } }
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。