微信公众号获取用户信息 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?
真的不懂哦
access_token 都是有失效时间的,也就是说在这个时间内 你可以一直用这个token请求接口 而不用每次都是重新获取。第一次请求的时候你可以把token放到缓存里,设置一个失效时间,第二次使用token的时候先去缓存取 ,如果没有取到再去请求接口获取
将第一次获取后的openid写入cookie, cookie有效期为token的有效期, access_token 随便存哪里都行, 比如存redis中就是 openid:access_token, 之后就判断cookie中有没有openid, 有的话就拿存的access_token, 没有的话重新请求然后再写入cookie
微信公众号接口中,普通的access_token需要缓存。授权登录中获取的access_token(也就是你说的第二步)没必要缓存
这个没限制的 建议用easywechat
我刚刚去看了自己以前代码 好差啊
用户授权的 access_token 跟限制 2000 次的不是同一个,你区分开就好理解了。