100%成功获取小程序码的诀窍
Reid 2019-08-18
Java
微信小程序
# AccessToken
我们都知道微信小程序的大部分接口都需要一个access_token
作为凭证,生成小程序码 (opens new window)
当然也不例外。
# 技术方案
前段时候(2 个月前吧),我们有一个项目是需要生成小程序码的,当时的技术方案是这样的:
- 后端获取到
access_token
后缓存到Redis
中,缓存时间为 1 小时 - 通过
access_token
请求生成小程序码 (opens new window)的接口生成小程序码 - 将小程序码上传到七牛云,将返回的图片地址保存到数据库
# 坑
刚查了一下获取 AccesToken (opens new window)的接口文档,里面写着access_token
的expires_in
(有效时间)是 7200 秒之内的值,我记得之前是写着 7200 秒的,可能记错了。大家要看清楚,这里写的是7200 秒之内,也就是说这个数值是很虚幻的,你根本不知道具体是多久。
我们就是在这里栽了跟头,偶尔生成小程序码会出现失败,但一查Redis
,access_token
还没过期呀,上面说到我们保存的时长是一小时,而微信官方文档写着两小时,所以我们当初就以为是业务代码出问题了,后来排查过业务代码没毛病,觉得会不会是access_token
有问题,遂重新生成access_token
就可以生成了,当即定位是access_token
的问题。
# 解决方案
最后的解决方案便是将access_token
的缓存时间由一小时改为五分钟,后面便没有再出现过此类问题了。为什么是五分钟?因为access_token
刚生成后的 10 分钟以为是很靠谱的,后面就难说,为了避免出问题,就设置个五分钟,对服务器来说也没增加什么负担。
# 总结
对于微信的东西还是要谨慎一些,个人感觉微信的东西没有阿里走心(开发方面),像expires_in
的这个有效时长,给人的感觉像是文字游戏一样,吐槽也吐槽完了,饭还是要恰的,微信小程序确实体验挺好的~