最近开发微信公众号,需要用到微信公众号授权登录以及微信的一些其他功能,现在存在一个BUG就是,刷新后重新授权,导致缓存里面的access_token过期,然后在用这个token去请求微信其他功能,就报错了。
一、官方解释
1、网页授权access_token:公众号授权后,可以获得一个特有的调用凭证(网页授权access_token)通过该access_token可进行接口调用,例如:获取用户基本信息。
2、全局access_token:微信其他接口,需要通过基础支持中的【获取access_token】接口来获取到普通的access_token调用。
二、异同点
相同点:都是access_token,有效期为7200秒;
不同点:
1、网页授权access_token需要先获取一次性使用的code;全局access_token可直接调用接口获取。
2、网页授权access_token是微信的一对一关系,只能获取对应的微信用户信息;全局access_token可重复使用,可获取不同微信用户的信息。
3、网页授权access_token获取次数没有限制;全局access_token每天获取最多次数为2000次;
三、官方文档
1、网页授权access_token:
第一步:用户同意授权,获取code:
https://open.weixin.qq.com/connect/oauth2/authorize?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=SCOPE&state=STATE#wechat_redirect
用户同意授权后,页面将跳转至 redirect_uri/?code=CODE&state=STATE
code作为换取access_token的票据,每次用户授权带上的 code 将不一样,code只能使用一次,5分钟未被使用自动过期。
第二步:通过code获取网页授权access_token
https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code
返回结果:
{ "access_token":"ACCESS_TOKEN", "expires_in":7200, "refresh_token":"REFRESH_TOKEN", "openid":"OPENID", "scope":"SCOPE" }
详见文档:
https://developers.weixin.qq.com/doc/offiaccount/OA_Web_Apps/Wechat_webpage_authorization.html
2、全局access_token
全局access_token是公众号的全局唯一接口调用凭据,各个接口的调用都需要access_token,需要保存至少2个小时,有效期为2个小时,需定时刷新,重复获取将导致上次获取的access_token失效。
调用方式:
https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET
打完收工!
标签:code,微信,access,获取,token,授权 来源: https://www.cnblogs.com/e0yu/p/16698959.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。