微信公众号开发踩坑指南(2)——access_token失效接口调用冲突"errcode":40001

微信的access_token真的是一个天坑,开发者社区也是一片哀嚎,还一直以为是微信的bug。

这个token决定了接下来的一系列功能,所以token失效代表后面的功能都会收到影响。

一开始token获取后在有效期内失效我还以为是后一个获取的token覆盖了前一个token,导致前一个失效。但是,我的token都是直接去memcache中读取的,而不是重新获取的,难道在失效的一瞬间两个接口请求同时获取新的accesstoken了吗?

所以我想了两个解决方法:

(1)我计算了一下,token接口日上限为2000次,一天24*3600=86400s,平均43.2s可以重新获取一次,而新老token之间存在一个5min左右的过渡期,那么只要我存储token的memcache时间小于300s即可。

(2)调用没有限制的接口去验证token的有效性,无效则重新获取,这里我用的是get微信服务器IP的接口。

但是后来我发现利用token获取的问题还是时好时坏。按道理不会出现这个问题啊,而且我在测试环境上测的时候从来不会出现这个问题,那么我就觉得不是我的代码问题了,于是我去查了微信公众号的后台日志,发现出现了很多未加入白名单的IP!!!

这些IP请求获取token都失效了,所以导致影响后面的业务,这个白名单真的是又坑了我一次上次加了一些没想到公司的服务器那么多,白害我找了两天的bug!

希望遇到这个问题的同学首先去检查白名单问题,然后再查代码,早日脱坑。

 

你可能感兴趣的:(公众号开发,PHP)