网页授权获取微信用户信息错误40029:不合法的oauth_code

发布于 2022-09-01 17:35:08 字数 664 浏览 12 评论 0

这几天测试刚完成的网页授权获取微信用户信息功能。

在第一步:用户同意授权获取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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(17

仙气飘飘 2022-09-08 17:35:08

请问有答案吗?

舞袖。长 2022-09-08 17:35:08

我这也是40029错误,根据日志中数据分析,不止是2次,基本是个位数,然后最多的就是123、78、70、65(只是一天的数据4台机器),时间点是10:37:04~16:11:06(偏差在5分钟内),我也是醉了,不知道有没有人可解答

溺孤伤于心 2022-09-08 17:35:08

我最后选择了在用户关注微信公众号的时候一次获取用户信息,保存数据库,然后用户访问页面的时候静默获取openid,再根据openid从数据库中读取用户的相关信息。

浪荡不羁 2022-09-08 17:35:08

静默获取也偶尔会有这样的问题,结果用户自己结束微信程序再登录就好了,很奇怪有没有人知道为什么

话少情深 2022-09-08 17:35:08

我也遇到了这个问题,有没有人知道,求分享

泪眸﹌ 2022-09-08 17:35:08

accessToken 信息需要自行保存的,你应该是重复授权了。

http://github.com/thenbsp/Wechat

ら栖息 2022-09-08 17:35:08

请问要如何解决呢

幼儿园老大 2022-09-08 17:35:08

同求 40029错误

现在正常是没问题的,但一段时间(几个小时后) 就会出现40029, 是所有用户都会出现40029

我只有重启服务器就好了, 我是nodejs服务器+nginx

由于是为了使用微信支付, 生成统一订单是需要openid, 我把openid保存到数据库里面, 以获取过openid的用户不再通过code获取, 但 如果出现过40029, 不通过code获取, 用数据库中的openid生成统一订单过不去.

很奇怪,openid 应该是唯一的,不知道是为什么

南薇 2022-09-08 17:35:08

类似,我这儿是进入页面时拿到CODE,然后用$.ajax()方法去验证改用户openid是否已经获取过了

注释掉这个$.ajax()方法,则一切正常,利用CODE可以获取到aceess_token,不注释,则获得的CODE获取acccess_token时提示40029

原因不明

暗恋未遂 2022-09-08 17:35:08

跳转到微信网页授权地址时,try-catch一下,如果出现报错,重新获取授权就行

雾里花 2022-09-08 17:35:08

奇怪的是,在ios设备的微信中,我们会遇到比较多这种情况。通过code获取不到静默授权的微信openid。
可能的原因是:
1)微信打开了多个页面, 每个页面都带了一个相同的code,因此将code验证了许多次,在第一次以后的验证,都是失效的code, 获取不了openid。
2)微信给的code就不是合法的code,从服务器的日志可以查到,同一个code,只请求了一次,也会有失败的情况发生,出现错误代码40029。

你在我安 2022-09-08 17:35:08

我是这样处理的,重新授权登录一次,redirect_uri加个参数?no=随机数

神仙妹妹 2022-09-08 17:35:08

请问问题解决了吗,分享一下

晨与橙与城 2022-09-08 17:35:08

用楼主的授权登录逻辑成功获取openid,先是后台重置secret然后后台的路径写成了小程序的路径,改成公众号,问题解决。

您的好友蓝忘机已上羡 2022-09-08 17:35:08

楼主啊,问题解决没有

各自安好 2022-09-08 17:35:08

我的问题解决了。我是appid和appsecret没有填写正确报的40029

落墨 2022-09-08 17:35:08

我也遇到了同样的问题,后来发现是自己代码逻辑的问题,在获取用户数据的信息和统一下单的时候都调用了code发送get请求获取openid,使code被用了两次

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文