首页 > 代码库 > 微信 {"errcode":40029,"errmsg":"invalid code, hints: [ req_id: Cf.y.a0389s108 ]"}

微信 {"errcode":40029,"errmsg":"invalid code, hints: [ req_id: Cf.y.a0389s108 ]"}

 

{"errcode":40029,"errmsg":"invalid code, hints: [ req_id: Cf.y.a0389s108 ]"}

 

问题:微信网页授权后,获取到 openid 了,一刷新又没了

 

微信网页授权获取到的 code 只能使用一次(5分钟内有效),使用一次后,马上失效。

 

页面授权跳转成功,根据 code 也换取到 openid 了。

此时刷新页面,并不会再次进行授权,而是直接刷新了一下上一次授权跳转后的链接,带的还是上一次的 code (如果你复制当前页面的链接,会发现它就是请求授权的链接,然而,刷新的时候,它访问的并不是这个请求授权链接)。

因为上一次的 code 已经使用过,再根据这个 code 换区 openid,就会返回:{"errcode":40029,"errmsg":"invalid code, hints: [ req_id: Cf.y.a0389s108 ]"}

 

解决方式有很多种:

方式一:获取 openid 的时候,判断一下,如果为空,则重定向去授权,这样的话,不管怎么刷新,都没关系,一定能获取到 openid (这种方式太简单粗暴,虽然这个接口没用调用次数限制,但每次都授权,总感觉压力有点大)

方式二:将 openid 放到 session 里,如果 session 里取不到,再进行授权(微信里的 session 不知道退出登录会不会断开,已知关闭程序时会断。如果换个微信登录,session 没断,就不好了。只有一个微信号,没测试过!)

方式三:将 openid 放 cookie 里,一次授权,终生可用,看你 cookie 设置的有效期是多久了(不知道换个微信号登陆,cookie 里取出的是不是还是这个,是的话,也不好了。)

微信 {"errcode":40029,"errmsg":"invalid code, hints: [ req_id: Cf.y.a0389s108 ]"}