报错:
{"errcode":40029,"errmsg":"req id: L3U1QA0347ns40, invalid code"}
java代码
public class WeChatUserInfoController {
private Log logger = LogFactory.getLog(WeChatUserInfoController.class);
private String get_access_token_url="https://api.weixin.qq.com/sns/oauth2/access_token?"
+ "appid=APPID"
+ "&secret=SECRET"
+ "&code=CODE&grant_type=authorization_code";
private String get_userinfo="https://api.weixin.qq.com/sns/userinfo?"
+ "access_token=ACCESS_TOKEN"
+ "&openid=OPENID"
+ "&lang=zh_CN";
@RequestMapping(value = "/oauth")
public String oauth(HttpServletRequest request, HttpServletResponse response) {
logger.info("----- /wechat/oauth: 开始 -----");
String code = ServletRequestUtils.getStringParameter(request, "code", null);
String state = ServletRequestUtils.getStringParameter(request, "state", null);
get_access_token_url = get_access_token_url.replace("APPID", "*****");
get_access_token_url = get_access_token_url.replace("SECRET", "*****");
get_access_token_url = get_access_token_url.replace("CODE", code);
WeChatAccessToken at = getAccessToken(get_access_token_url);
String access_token = at.getAccess_token();
String openid = at.getOpenid();
logger.info("----- code: 开始 -----" + code);
logger.info("----- access_token: 开始 -----" + access_token);
logger.info("----- openid: 开始 -----" + openid);
logger.info("----- openid: 开始 -----" + at.getExpires_in());
logger.info("----- openid: 开始 -----" + at.getRefresh_token());
logger.info("----- openid: 开始 -----" + at.getScope());
logger.info("----- openid: 开始 -----" + at.getUnionid());
get_userinfo = get_userinfo.replace("ACCESS_TOKEN", access_token);
get_userinfo = get_userinfo.replace("OPENID", openid);
WeChatUserInfo ui = getUserInfo(get_userinfo);
request.setAttribute("userInfo", ui);
logger.info("----- /wechat/oauth: 结束 -----");
return "/h5/activity/demo";
}
public WeChatAccessToken getAccessToken(String url){
WeChatAccessToken at = HttpClientUtil.simpleHttpCallGet(
url, null, null, 20000
, new HttpClientCallBack<WeChatAccessToken>() {
@Override
public WeChatAccessToken handleResult(ResultBean res)
throws IOException {
GetMethod getMethod = (GetMethod) res.getValueObject();
WeChatAccessToken accessToken = JSON.parseObject(getMethod.getResponseBody(), WeChatAccessToken.class);
return accessToken;
}
});
return at;
}
public WeChatUserInfo getUserInfo(String url){
WeChatUserInfo userInfo = HttpClientUtil.simpleHttpCallGet(
url, null, null, 20000
, new HttpClientCallBack<WeChatUserInfo>() {
@Override
public WeChatUserInfo handleResult(ResultBean res)
throws IOException {
GetMethod getMethod = (GetMethod) res.getValueObject();
WeChatUserInfo userInfo = JSON.parseObject(getMethod.getResponseBody(), WeChatUserInfo.class);
return userInfo;
}
});
return userInfo;
}