企业微信获取用户信息响应40029
在对接企业微信的时候需要通过code去获取userId,但是会返回40029的error码,经过测试与验证原因是访问地址
https://open.weixin.qq.com/connect/oauth2/authorize?appid=xxxxxxxxxxxxxx&redirect_uri=http://www.baidu.com&response_type=code&scope=snsapi_base&state=state#wechat_redirect
会重定向两次,后来问过企业微信人工客服

所以我们可以对userId进行缓存来解决这个问题,在出现40029异常的时候再去缓存中拿一次
(微信小程序与公众号出现类似问题应该是同样的原因)
public static String getUserId(String code,String accessToken ){
String url = GET_USER_INFO.replace("ACCESS_TOKEN", accessToken).replace("CODE", code);
String result = HttpRequest.get(url).execute().body();
JSONObject jsonobject = JSONObject.parseObject(result);
if(null!=jsonobject){
if (jsonobject.containsKey("errcode") ){
if (jsonobject.getString("errcode").equals("40029")){ //判断是否有code重复消费的异常如果有则从redis缓存中取userId
System.out.println("UserId:"+redisTemplate.opsForValue().get(QYWX_USERID));
return redisTemplate.opsForValue().get(USERID);
}
if (jsonobject.getString("errcode").equals("0")){ //如果没有异常则将userId缓存到redis
redisTemplate.opsForValue().set(USERID,jsonobject.getString("UserId"));
System.out.println("userID:"+jsonobject.getString("UserId"));
return jsonobject.getString("UserId");
}
}
}
return null;
}
1万+

被折叠的 条评论
为什么被折叠?



