spring mvc下微信网页授权出错 40163

neilchen226 2017-02-13 07:14:45
微信网页授权时,获取了code,使用code获取用户信息时一直无法获取,接口返回数据为:
"errcode":40163,"errmsg":"code been used“

使用的是spring mvc框架处理回调的url,在回调的url中调用微信接口获取用户信息

具体的实现如下:

/*
* 生成微信授权请求地址
* 提供需要获取用户信息的请求地址,将其放入回调地址的请求参数中,在回调地址请求成功后,再跳转到该地址
*/

@RequestMapping("/wechat/home/oauth2")
public String Oauth2API(HttpServletRequest request, @RequestParam String resultUrl) {
String redirectUrl = "";
if (resultUrl != null) {
String reqUrl = request.getLocalAddr();
String backUrl = "http://" + reqUrl + "/wechat/home/oauth2url?oauth2url=" + resultUrl;
log.debug("授权回调地址: " + backUrl);
try {
redirectUrl = WxUtil.getOAuthUrl(backUrl, "snsapi_userinfo",new Date().getTime()+"");//生成授权地址,三个参数分别为 回调地址,授权方式,state参数
log.debug("微信授权请求地址: " + redirectUrl);
} catch (Exception e) {
e.printStackTrace();
}
}
return "redirect:" + redirectUrl;
}
/*
* 访问微信授权后请求的地址
*
*/

@RequestMapping(value = { "/wechat/home/oauth2url" })
public String Oauth2MeUrl(HttpServletRequest req,HttpSession session, @RequestParam String code, @RequestParam String oauth2url) {
System.out.println("授权携带参数: "+req.getQueryString());
log.debug("code = 【" + code + "】, 跳转地址: 【" + oauth2url + "】");
JSONObject json = WxService.getWebAccessToken(code);//调用微信接口获取用户信息
if (json != null && json.containsKey("openid")) {
String openid = json.getString("openid");
System.out.println("保存openid到session: " + openid);
session.setAttribute("openid", openid);
}
return "redirect:" + oauth2url;
}
...全文
32990 46 打赏 收藏 转发到动态 举报
写回复
用AI写文章
46 条回复
切换为时间正序
请发表友善的回复…
发表回复
狂妄的老头 2018-06-04
  • 打赏
  • 举报
回复
又一年了,感觉我可以助攻一波。你们到底解决了没有啊?公司是不是已经等倒闭了???
谢寿珠 2018-05-16
  • 打赏
  • 举报
回复
这个问题压根不是代码的问题,是你的公众号里面的白名单问题。spring mvc的ip地址是不是在白名单里面
YouCanYouUp_ 2018-05-15
  • 打赏
  • 举报
回复
引用 37 楼 z412660102 的回复:
[quote=引用 7 楼 neilchen226 的回复:] [quote=引用 5 楼 luojf945 的回复:] 楼主解决了嘛?我昨天也遇到同样的问题了!!!!!
有谁知道怎么解决吗...困扰两天了,我尝试不适用spring mvc,单纯的servlet使用Filter拦截处理这个code获取用户信息时没这个错误,但使用了spring mvc就有这问题,难道是spring mvc中要做什么配置? [/quote] 怎么解决的,我使用spring mvc一样总是返回40163[/quote] spring mvc怎么解决的???
Sias丶小殇 2018-04-09
  • 打赏
  • 举报
回复
18年了,我来看看你们解决了没?到底是微信坑?还是咱们方法没有用对?困扰这么久,微信支付就这破瘠薄接口还怎么去跟支付宝去VS?
「已注销」 2017-12-18
  • 打赏
  • 举报
回复
然后这个问题困扰你们一年都没有解决?。。。
li_cong121 2017-11-13
  • 打赏
  • 举报
回复
引用 36 楼 mackwang0213 的回复:
我也遇到这个问题,解决办法是:避免重复发送授权链接。比如你已经获取用户信息,但你刷新页面,获得重新返回该页面,导致相同的授权链接再次请求,产生错误。那么,我们如何避免再次请求呢?把获取的用户信息保存在session中,每次发送请求前,检查是否已经获取,如果已经获取用户信息,就不再请求。 我自己的实际解决办法是:获取用户信息后,进行重定向,那么无论是刷新还是从下一页面返回来,都将是请求重定向后的链接,不会再重复发送授权链接。就不会再产生这个错误。
我想看一下代码,好吗。。。老大
li_cong121 2017-11-13
  • 打赏
  • 举报
回复
引用 7 楼 neilchen226 的回复:
[quote=引用 5 楼 luojf945 的回复:] 楼主解决了嘛?我昨天也遇到同样的问题了!!!!!
有谁知道怎么解决吗...困扰两天了,我尝试不适用spring mvc,单纯的servlet使用Filter拦截处理这个code获取用户信息时没这个错误,但使用了spring mvc就有这问题,难道是spring mvc中要做什么配置? [/quote]楼主怎么用的filter,,请帮指点
兰朝晖 2017-10-27
  • 打赏
  • 举报
回复
我也是遇到类一样的问题!!!!!!!!求解
那丨抹微笑 2017-09-30
  • 打赏
  • 举报
回复
今天我也遇到了这个问题,我有个想法是,当第一次发送请求的时候,将code和请求回来的信息全部写入session中,每一次向微信请求的时候都先判断一下session中是否有对应的信息,如果session中没有信息则再次请求,如果有则直接读取session中的信息。初来乍到,还望大神们指点
z412660102 2017-08-29
  • 打赏
  • 举报
回复
引用 7 楼 neilchen226 的回复:
[quote=引用 5 楼 luojf945 的回复:] 楼主解决了嘛?我昨天也遇到同样的问题了!!!!!
有谁知道怎么解决吗...困扰两天了,我尝试不适用spring mvc,单纯的servlet使用Filter拦截处理这个code获取用户信息时没这个错误,但使用了spring mvc就有这问题,难道是spring mvc中要做什么配置? [/quote] 怎么解决的,我使用spring mvc一样总是返回40163
mackwang0213 2017-06-21
  • 打赏
  • 举报
回复
我也遇到这个问题,解决办法是:避免重复发送授权链接。比如你已经获取用户信息,但你刷新页面,获得重新返回该页面,导致相同的授权链接再次请求,产生错误。那么,我们如何避免再次请求呢?把获取的用户信息保存在session中,每次发送请求前,检查是否已经获取,如果已经获取用户信息,就不再请求。 我自己的实际解决办法是:获取用户信息后,进行重定向,那么无论是刷新还是从下一页面返回来,都将是请求重定向后的链接,不会再重复发送授权链接。就不会再产生这个错误。
xinyi10096 2017-03-28
  • 打赏
  • 举报
回复
引用 34 楼 xinyi1096 的回复:
我也是PHP遇到同样的问题,差不多同样的代码,在scope参数是snsapi_base时没问题,是snsapi_userinfo就会提示这个错误;特别纳闷,往知道的能给予指导啊
我感觉还是微信的api的问题吧,我重新关注微信公众号,再访问这个方法就好了;还不是很完美,有更好的办法还望大牛分享下
xinyi10096 2017-03-28
  • 打赏
  • 举报
回复
我也是PHP遇到同样的问题,差不多同样的代码,在scope参数是snsapi_base时没问题,是snsapi_userinfo就会提示这个错误;特别纳闷,往知道的能给予指导啊
a2241707 2017-03-22
  • 打赏
  • 举报
回复
我也是遇到这个问题了,感觉是微信的服务器的问题,然后今天微信开发公众号发来消息说要把code提高为128位。
ylg5132976 2017-03-21
  • 打赏
  • 举报
回复
怎么解决的啊??以前都没有这个问题的啊、
Bingorl 2017-03-17
  • 打赏
  • 举报
回复
我也遇到了这个问题,我自己程序里的log显示,授权成功之后,又进行了一次授权,但是我只在菜单跳转时进行了一次授权操作,怎么会重复授权两次的;另外这个现象好像不是一直出现的,不知道有没有什么解决方案?
qq_24630527 2017-03-14
  • 打赏
  • 举报
回复
解决没有???求教
qq_30764911 2017-03-08
  • 打赏
  • 举报
回复
引用 10 楼 xsrsl1688 的回复:
可以了,api的bug
怎么解决的,求教
qq_30764911 2017-03-08
  • 打赏
  • 举报
回复
这个问题楼主解决了吗?
hash_boy 2017-03-04
  • 打赏
  • 举报
回复
好高难度的问题呀,我也感兴趣。
加载更多回复(26)
这是一个基于SSM(Spring+Spring MVC+MyBatis)技术的学校小卖部收银系统毕业设计项目。本项目旨在为学校小卖部提供一个便捷、高效的收银管理系统,实现商品销售、库存管理、统计分析等功能。以下是关于这个项目的详细介绍: 1. 项目背景: 学校小卖部是一个重要的校园服务设施,为学生提供了方便快捷的购物体验。然而,目前许多学校小卖部的收银管理仍然依赖于人工操作,存在效率低下、易出错等问题。因此,开发一个基于SSM技术的学校小卖部收银系统具有很大的现实意义。 2. 项目功能: 本项目的主要功能如下: * 商品管理:管理员可以添加、编辑、删除商品信息,包括商品名称、价格、库存等信息。 * 订单管理:用户可以选择商品进行购买,生成订单并进行支付。管理员可以查看订单详情和处理异常订单。 * 用户管理:用户可以注册成为平台用户,登录后进行商品浏览、下单、支付等操作。 * 收银管理:系统提供了多种收银方式,包括现金、支付宝、微信等,方便商家进行结算。 * 统计分析:系统提供了丰富的统计分析功能,包括销售额、利润、客流量等报表,方便商家进行数据分析和管理决策。 3. 技术架构: 本项目采用SSM(Spring+Spring MVC+MyBatis)技术进行开发。其中,Spring负责控制反转和依赖注入;Spring MVC用于处理Web请求和响应;MyBatis用于实现数据库操作。此外,还使用了Eclipse和IntelliJ IDEA等开发工具进行代码编写和调试。 4. 部署说明: 本项目的部署说明包括以下步骤: * 将源码导入到Eclipse或IntelliJ IDEA中。 * 在MySQL数据库中创建相应的数据表(如用户表、商品表、订单表等)。 * 在Tomcat或Jetty等服务器上部署项目,配置相关参数(如端口号、数据库连接信息等)。 5. 演示视频: 本项目提供了一段演示视频,展示了平台的基本功能和使用方法。观看视频可以帮助用户更直观地了解项目的实现细节和操作流程。
[ 2021年,将Spring全家桶的课程进行Review,确保不再有顺序错乱等问题导致学员看不懂内容,进入2022年,将Spring的课程进行整理,整理为案例精讲的系列课程,并开始逐步增加高阶的Spring Security等内容,课件将逐步进行上传,敬请期待! ]本课程是Spring全家桶案例精讲课程的第二部分Spring MVCSpring案例精讲课程以真实场景、项目实战为导向,循序渐进,深入浅出的讲解Java网络编程,助力您在技术工作中更进一步。 本课程聚焦Java Spring的Web知识点,主要是关于Spring MVC的应用,包含:表单的增删改查、国际化、过滤器、拦截器、日志Log4j2及slf4j的使用、主题更改网站皮肤及样式、文件上传等的案例讲解,并且最后以一个SSM(Spring+Spring MVC+Mybatis)贯穿前后台的案例作为Spring MVC课程的终奖, 从而使大家快速掌握Spring的基础核心知识,快速上手,为面试、工作等做好充足准备。 由于本课程聚焦于案例,即直接上手操作,对于Spring的原理等不会做过多介绍,希望了解原理等内容的需要通过其他视频或者书籍去了解,建议按照该案例课程一步步做下来,之后再去进一步回顾原理,这样能够促进大家对原理有更好的理解。 【通过Spring全家桶,我们保证你能收获到以下几点】 1、掌握Spring全家桶主要部分的开发、实现2、可以使用Spring MVCSpring Boot、Spring Cloud及Spring Data进行大部分的Spring开发3、初步了解使用微服务、了解使用Spring进行微服务的设计实现4、奠定扎实的Spring技术,具备了一定的独立开发的能力  【实力讲师】 毕业于清华大学软件学院软件工程专业,曾在Accenture、IBM等知名外企任管理及架构职位,近15年的JavaEE经验,近8年的Spring经验,一直致力于架构、设计、开发及管理工作,在电商、零售、制造业等有丰富的项目实施经验 【本课程适用人群】如果你是一定不要错过!  适合于有JavaEE基础的,如:JSP、JSTL、Java基础等的学习者没有基础的学习者跟着课程可以学习,但是需要补充相关基础知识后,才能很好的参与到相关的工作中。 【Spring全家桶课程共包含如下几门】 
本项目是作者当时花费了3个多月的时间完成的.在此拿出来给大家分享,请珍惜作者的劳动成果,用心研读! JEEBBS最新版本采用hibernate3+spring mvc+spring3+freemarker技术架构,重新设计了jeebbs,重新架构后的JEEBBS性能得到了很大的提升,功能相比jeebbs v1.0也丰富了许多。 jeebbsV4.0功能列表 1、论坛APP 2、登录更改shiro登录认证以及记住我 3、在线人数、时长统计 4、提供用户接口、其他系统用户接口调用设置以及接口管理(可与jeecms系列软件无缝对接实现单点登录) 5、用户自定义字段 6、禁用ip、id发帖、回帖 7、注册成功自动登录 8、设置在线活跃度等级 9、手机模板方案设置 10、最近登录过(三天,一周、一个月、三个月、半年)查询 11、类似微信团队号(与用户沟通账户以及推送系统消息) 12、QQ登录 jeebbsV4.0修复以及完善部分 1.权限的访问的地址链接 2.图片太大显示不全问题 3.会员组设置附件上线没有用以及其他相关设置无效 4.附件上传经常上传不了 5.发帖文字内容不能居中、居左、居右 编辑器字体、大小、插入图片、排序列表无效、左浮动、右浮动 6.用户自定义头像错误 7.注册如果发送邮件激活的方式出错(返回页面错误org.hibernate.LazyInitializationException: could not initialize proxy - no Session) 8.禁止用户后不允许登录、发帖、回帖等 9.后台会员搜索中文名搜索乱码 10.注册会员的时候提示邮箱的格式不对 11.登录设置邮箱密码文本框改成密码框
JEEBBS最新版本采用hibernate3+spring mvc+spring3+freemarker技术架构,重新设计了jeebbs,重新架构后的JEEBBS性能得到了很大的提升,功能相比jeebbs v1.0也丰富了许多。 jeebbsV4.0功能列表 1、论坛APP 2、登录更改shiro登录认证以及记住我 3、在线人数、时长统计 4、提供用户接口、其他系统用户接口调用设置以及接口管理(可与jeecms系列软件无缝对接实现单点登录) 5、用户自定义字段 6、禁用ip、id发帖、回帖 7、注册成功自动登录 8、设置在线活跃度等级 9、手机模板方案设置 10、最近登录过(三天,一周、一个月、三个月、半年)查询 11、类似微信团队号(与用户沟通账户以及推送系统消息) 12、QQ登录 jeebbsV4.0修复以及完善部分 1.权限的访问的地址链接 2.图片太大显示不全问题 3.会员组设置附件上线没有用以及其他相关设置无效 4.附件上传经常上传不了 5.发帖文字内容不能居中、居左、居右 编辑器字体、大小、插入图片、排序列表无效、左浮动、右浮动 6.用户自定义头像错误 7.注册如果发送邮件激活的方式出错(返回页面错误org.hibernate.LazyInitializationException: could not initialize proxy - no Session) 8.禁止用户后不允许登录、发帖、回帖等 9.后台会员搜索中文名搜索乱码 10.注册会员的时候提示邮箱的格式不对 11.登录设置邮箱密码文本框改成密码框

81,091

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧