扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
在实践中,一个单位往往只有一个公众号,但不少单位可能有多个网站系统,甚至分别来自不同的技术服务商。如果是网站与公众号一对一的对接,很多时候都是直接用主流的对接方案:也就是在每次获取access_token的时候进行本地缓存,因为access_token有效期好像是2小时,意味着过期时间之前在网站服务端可以复用同一个access_token。
那么为什么主流的技术方案都是使用缓存技术把access_token缓存下来,主要原因我认为有两点:
1、微信平台一个微信公众号单日获取access_token的次数是有限制的,默认是是10000次。虽然很多小型项目很难需要一天获取10000次,但从可用性安全角度考虑,我们还是希望即便是极端条件下也不要超过这个限制。
2、即便不考虑上一条,在一些应用场景下,如页面使用jssdk的时候,就需要使用到access_token。如果不缓存,意味着用户每一次刷新页面都需要网站服务端与微信平台进行http请求,这样页面执行效率自然太低。
但是,如果使用缓存到本地,这样会造成一个问题,就是多个系统间缓存信息不同步,这样自然导致access_token失效。
举个例子,现在有A和B两个网站使用同一个公众号,首先A网站获取了一个access_token,我们记为token1,缓存时间3600秒。然后15分钟后,B网站获取了一个access_token,我们记为token2。此时对应公众号整体来讲,token2才是有效的,token1早已失效了。但对于A网站,有效的还是token1,这样自然导致出错。
那么如何解决这个问题?
那就是以某个站点为基准站,假设我们以A网站为基准站。只是用A网站跟微信平台对接,其他的网站B、C、D……等等,都不要去直接与微信平台对接,而是通过A网站提供的接口来获取access_token即可,这样就可以实现多个系统间access_token缓存后不同步的问题。
同样的,这种方法还可以解决微信服务号设置登录网页回调域名仅能设置2个域名的问题,通过这种方式无论多少个域名都可以实现回调code值。
而我们微构网络开发的很多涉及到微信公众号的网站系统,已经自带了基准站用于管理微信公众号并对其他提供接口的模块,可以直接复用即可。如果需要了解具体的实现方式,欢迎联系我们沟通交流。
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流