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

2022-08-14 14:48:06 浏览数 (1)

大家好,又见面了,我是你们的朋友全栈君。

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

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

由于面一次被终止,生效的为第二次,因而不能获取到用户信息。(可这种情况只是偶尔发生,过一会儿再进入又正常了),请教这个问题应该如何解决?

===========================================================================

下面贴一张我获取微信用户信息的流程图,请教各位这个流程是不是存在什么问题呢?改怎么改善一下?

请问有答案吗?

我这也是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=随机数

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

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/133258.html原文链接:https://javaforall.cn

0 人点赞