标签:有效期 问题 val 成功 退出 err pen 跳转 定向
问题:微信网页授权后,获取到 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 ]"}
标签:有效期 问题 val 成功 退出 err pen 跳转 定向
原文地址:http://www.cnblogs.com/liaolongjun/p/6080503.html