解决多个位置存储微信公号api access_token值导致接口返回42001错误

故障现象

微信服务号发送模版消息失败,生成事件二维码图片也失败

代码没有任何改动,莫名其妙就这样了

调试过程
检查后发现如下返回错误
{     "errcode": 40001,     "errmsg": "invalid credential, access_token is invalid or not latest" }

{
“errcode”: 40001,
“errmsg”: “invalid credential, access_token is invalid or not latest”
}

{
“errcode”: 40001,
“errmsg”: “invalid credential, access_token is invalid or not latest”
}
检查微信所有api相关参数是否正确,检查都是对的
重新获取新的access_token测试能通过
一度怀疑是不是缓存有效期是不是出问题了
过期了应该是下图的样子42001,而不是40001呀
42001

{
“errcode”: 42001,
“errmsg”: “access_token expired”
}

# 找到问题
最后一句话点醒了我
yi5344 说道 access_token的有效期目前为2个小时,需定时刷新,重复获取将导致上次获取的access_token失效。
突然想起来,在我们的系统当中有两处独立的微信公众号SDK调用,缓存access_token是独立工作的。
对于同一个微信公众号来说 access_token 是一把钥匙。
如果本地access_token多处单独存储和缓存,这样会导致多处都去更新微信api中access_token值,当更新发生的时候这样只有一处是正常的,其他地方本地的access_token就失效了。
# 解决方法
对于同一个微信公众账号的  access_token 只能存储在一个地方。
打赏

发表评论

电子邮件地址不会被公开。 必填项已用*标注