微信 {"errcode":40029,"errmsg":"invalid code, hints: [ req_id: Cf.y.a0389s108
Posted 米饭
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了微信 {"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的主要内容,如果未能解决你的问题,请参考以下文章
更新.Net版本导致System assembly not found问题
安装Anaconda后终端测试conda命令显示"Command Not Found"
Grails 3.1.4 和 Docker - grails 命令返回“No profile found for name web”
oracel 密码延时特性;更改 pfile导致启动报错ORA-49601: syntax error: found "%s": expecting one of: "%
mac上终端出现 command not found解决方法
Mac AndroidStudio提示 Plugin with id "com.android.library" not found