微信公众号静默授权回调接口两次

廉价感情. 提交于 2020-02-28 09:38:25

微信公众号静默授权文档

在微信端点开链接提示"获取openId失败",这是接口返回的结果,说明微信已经请求到接口了

加上日志打印

log.info("code:{}",requestVO.getCode());
log.info("openId:{}",openId);

发现日志输出了两遍

所以我猜测微信那边应该回调了接口两次,参考链接

百度了一下

处理方案

  1. &connect_redirect=1 (经过测试无效)
  2. 有的说提供一个中间Controller,然后重定向到业务Controller(参考链接,未测试)
  3. 通过缓存控制

最后解决的办法是加个缓存,key=code,value=openId

String redisOpenId = redisCache.getCacheObject(wxCode);

if (StringUtils.isEmpty(redisOpenId)){
    Map<String, String> weiXinMap = WeiXinUtil.getOpenIdByCode(wxCode);
    String openId = weiXinMap.get("openid");
    redisCache.setCacheObjectSeconds(wxCode,openId,30);
}

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!