网页授权获取微信用户信息错误40029:不合法的oauth_code
这几天测试刚完成的网页授权获取微信用户信息功能。
在第一步:用户同意授权获取code,通过code获取access_token时,有时会出现40029错误。
经过调试,发现问题出现在redirect_uri=REDIRECT_URI当跳转到授权链接后,微信会发出两次转向至redirect_uri的相同请求(两次带进来的code是相同的)。
第一次的code后已经成功换取得openid以及access_token;
第二次转向到redirect_uri时,该code已经失效(code只能使用一次),从而导致了40029:不合法的oauth_code的错误,不能再获取到access_token。
由于面一次被终止,生效的为第二次,因而不能获取到用户信息。(可这种情况只是偶尔发生,过一会儿再进入又正常了),请教这个问题应该如何解决?
===========================================================================
下面贴一张我获取微信用户信息的流程图,请教各位这个流程是不是存在什么问题呢?改怎么改善一下?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(17)
请问有答案吗?
我这也是40029错误,根据日志中数据分析,不止是2次,基本是个位数,然后最多的就是123、78、70、65(只是一天的数据4台机器),时间点是10:37:04~16:11:06(偏差在5分钟内),我也是醉了,不知道有没有人可解答
我最后选择了在用户关注微信公众号的时候一次获取用户信息,保存数据库,然后用户访问页面的时候静默获取openid,再根据openid从数据库中读取用户的相关信息。
静默获取也偶尔会有这样的问题,结果用户自己结束微信程序再登录就好了,很奇怪有没有人知道为什么
我也遇到了这个问题,有没有人知道,求分享
accessToken 信息需要自行保存的,你应该是重复授权了。
http://github.com/thenbsp/Wechat
请问要如何解决呢
同求 40029错误
现在正常是没问题的,但一段时间(几个小时后) 就会出现40029, 是所有用户都会出现40029
我只有重启服务器就好了, 我是nodejs服务器+nginx
由于是为了使用微信支付, 生成统一订单是需要openid, 我把openid保存到数据库里面, 以获取过openid的用户不再通过code获取, 但 如果出现过40029, 不通过code获取, 用数据库中的openid生成统一订单过不去.
很奇怪,openid 应该是唯一的,不知道是为什么
类似,我这儿是进入页面时拿到CODE,然后用$.ajax()方法去验证改用户openid是否已经获取过了
注释掉这个$.ajax()方法,则一切正常,利用CODE可以获取到aceess_token,不注释,则获得的CODE获取acccess_token时提示40029
原因不明
跳转到微信网页授权地址时,try-catch一下,如果出现报错,重新获取授权就行
奇怪的是,在ios设备的微信中,我们会遇到比较多这种情况。通过code获取不到静默授权的微信openid。
可能的原因是:
1)微信打开了多个页面, 每个页面都带了一个相同的code,因此将code验证了许多次,在第一次以后的验证,都是失效的code, 获取不了openid。
2)微信给的code就不是合法的code,从服务器的日志可以查到,同一个code,只请求了一次,也会有失败的情况发生,出现错误代码40029。
我是这样处理的,重新授权登录一次,redirect_uri加个参数?no=随机数
请问问题解决了吗,分享一下
用楼主的授权登录逻辑成功获取openid,先是后台重置secret然后后台的路径写成了小程序的路径,改成公众号,问题解决。
楼主啊,问题解决没有
我的问题解决了。我是appid和appsecret没有填写正确报的40029
我也遇到了同样的问题,后来发现是自己代码逻辑的问题,在获取用户数据的信息和统一下单的时候都调用了code发送get请求获取openid,使code被用了两次