微信公众号获取用户信息 access_token 需要缓存? 脑子乱了 求梳理

我看到access_token说是限制2000次,然后大家需要缓存下。那么获取用户信息是用到access_token和openid么,要想获取到openid不得按照接口

https://api.weixin.qq.com/sns/oauth2/access_token?appid=XXX&secret=XXX&code=XXX&grant_type=authorization_code

那么这个接口不是又重新获取了一次 access_token 么?

第一步 换code

https://open.weixin.qq.com/connect/oauth2/authorize?appid=xxx&redirect_uri=xxx&response_type=code&scope=snsapi_userinfo&state=STATE#wechat_redirect

第二步 用code和appid和appsecret获取用户的 openid 和 access_token

https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code

第三步 用access_token 和 用户的openid 才能获取到用户的信息

https://api.weixin.qq.com/sns/userinfo?access_token=ACCESS_TOKEN&openid=OPENID&lang=zh_CN

那么问题来了,这个要想获取到用户的openid 不都得走 第二步吗?那么access_token不就又刷新了吗?
可以用code 和 access_token 获取到用户的openid?
真的不懂哦

《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 5

access_token 都是有失效时间的,也就是说在这个时间内 你可以一直用这个token请求接口 而不用每次都是重新获取。第一次请求的时候你可以把token放到缓存里,设置一个失效时间,第二次使用token的时候先去缓存取 ,如果没有取到再去请求接口获取

3年前 评论
liuhaiqiang999 (楼主) 3年前
kiti (作者) 3年前
kiti (作者) 3年前
liuhaiqiang999 (楼主) 3年前
liuhaiqiang999 (楼主) 3年前
kiti (作者) 3年前
yc8534016 3年前

将第一次获取后的openid写入cookie, cookie有效期为token的有效期, access_token 随便存哪里都行, 比如存redis中就是 openid:access_token, 之后就判断cookie中有没有openid, 有的话就拿存的access_token, 没有的话重新请求然后再写入cookie

3年前 评论
liuhaiqiang999 (楼主) 3年前
liuhaiqiang999 (楼主) 3年前
tianxionglu (作者) 3年前

微信公众号接口中,普通的access_token需要缓存。授权登录中获取的access_token(也就是你说的第二步)没必要缓存

3年前 评论
liuhaiqiang999 (楼主) 3年前
shinn_lancelot (作者) 3年前

file

这个没限制的 建议用easywechat

我刚刚去看了自己以前代码 好差啊:cry:

Laravel

3年前 评论
liuhaiqiang999 (楼主) 3年前
lyxxxh (作者) 3年前
liuhaiqiang999 (楼主) 3年前

用户授权的 access_token 跟限制 2000 次的不是同一个,你区分开就好理解了。

3年前 评论
yc8534016 3年前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!