小程序access_token耗尽问题

概述


前几天,产品经理紧急打我电话,说后台好些商品无法生成小程序码了,这些商品小程序码是需要紧急推到公众号文章里的,让我赶紧解决。

我立马登录到后台操作了一下,果然报错了。但是由于报错信息只是:“操作失败”。啥都没有,简直醉了,只能用tail -f xxxx.log命令,看看具体的报错堆栈,发现是空指针错误,仔细看了一下代码,当access_token为空的时候,会走入到一段特有的逻辑,但是这段代码逻辑不严谨导致的这个错误。

这种情况下,得先知道为啥access_token获取不到了,再次看了一下日志,发现微信那边提示:

reach max api daily quota limit hint

意思是说,超过限制了,google了一把,有两个解决方案:

  • 登录后微信公众号后台,进行手动清0;
  • 直接调用微信的清零接口;

第一种办法做不到,因为针对小程序的,压根就没这个入口。只能用access_token超过限制文章提到的,手动调用:

https://api.weixin.qq.com/cgi-bin/clear_quota

要想访问这个接口,需要两个参数,第一个是有效的access_token,第二个参数是app_id,还好当时我们有缓存过access_token,虽然当前获取不到,但是可以试一下用之前还未失效的access_token,至于app_id,这个很好获取的。

可以使用postman进行调用。
在这里插入图片描述

调用完后,终于又可以生成小程序码了。


追根问底


处理完这个问题后,仔细观察了后台日志,发现有个定时任务,需要频繁的直接调用微信接口获取access_token,会耗尽access_token的。赶紧改动代码,换成先从缓存读取,获取不到了,才到微信那边获取。


小结


从处理问题的过程来看,业务系统打印日志是非常重要的,像这种access_token获取不到的场景,一定要记录日志,把入参和出参都打印出来,方便定位问题。

猜你喜欢

转载自blog.csdn.net/linsongbin1/article/details/90346409