记 小程序 access_token 的保存解决方案

最近开发小程序,有一个功能是分享页面,因为回来的页面是要带参数点,便决定使用生成小程序码来解决这个功能,先看官方的说明文档: 我使用的是第二种方式,目前这种方式生成小程序码数量不受限制!

这个借口的一个参数是要用的 access_token 的,但是 access_token 是有有效期到,同样官方文档也建议我们:

1、建议公众号开发者使用中控服务器统一获取和刷新Access_token,其他业务逻辑服务器所使用的access_token均来自于该中控服务器,不应该各自去刷新,否则容易造成冲突,导致access_token覆盖而影响业务;

同时我使用的是小程序的 wafer2-node-sdk 解决方案,这个是基于 Koa2 来实现的,写接口什么的也比较顺利,但是竟然没找到全局变量的功能,然后网上搜,有说用数据库的,缓存的,我不想这么一个简单的功能就用这个呀,所以我开始走上了弯路:

1.第一个版本使用 json 文件来存储,搭配定时器来实现,但是第一次可以用,但是再以后却开始 token 过期了.不解:后来意外的发现,因为我是用 require('./**/**.json') 的方式引入的 json 文件,这样带来一个问题,json 发生变化是,那个实例并不会发生改变,导致取到的永远是第一次加载时的值.

2.没办法,只有上 redis 了,一开始感觉一个简单的功能没必要,其实用 redis 也比较方便,服务器使用的 CentOS,然后yum install redis -y 就可以了,然后搭配 redis 库, 配合 expire 存储,也实现了功能,同时使用 schedule-node 来执行定时刷新,我设置的刷新频率是一个小时一次,刚开始还不错,可是用完还是会报过期.懵逼中.

3.无意中搜到一篇文章,简直是救命稻草:原文找不到了,意思是同一个 AppID 在其他地方请求时也会导致过期,我擦,因为我在本地也有开发环境,也会定时请求,赶紧把本地的请求关闭,同时线上开启了一个获取 access_token 的接口,本地要用都从这个接口获取,几天下来,总算解决了问题.同时使用 node_env 来判断线上还是本地,避免认为导致的错误.

希望对大家有帮助.

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 136,338评论 19 139
  • 1、通过CocoaPods安装项目名称项目信息 AFNetworking网络请求组件 FMDB本地数据库组件 SD...
    阳明AI阅读 16,128评论 3 119
  • “事实上,这是一个众人皆知的窍门。我们可以通过很多不同的方法。在过去的一年半我想更加为自己的身体负责。现在晚上6点...
    云游四方的旅人阅读 346评论 0 0
  • 简书的朋友大家好,我是小万,你可以叫我万总或者万万,第一次认识,有点不知所措。 我们是一个年轻的写手团队,年轻一般...
    万物志阅读 187评论 0 0
  • let's make time for the people who matter most. 让我们为最重要的人...
    VI8080阅读 368评论 0 0

友情链接更多精彩内容