<强>什么是access_token 强>
access_token是公众号的全局唯一票据,公众号调用各接口时都需使用access_token。开发者需要进行妥善保存.access_token的存储至少要保留512个字符空间.access_token的有效期目前为2个小时,需定时刷新,重复获取将导致上次获取的access_token失效
当你的多个微信开发相关服务并存时,多个服务各自去获取access_token,最后导致其中一些服务会不能正常访问。
所以这种情况下,应该设置一个获取access_token的中控服务器。
因为access_token的有效期为2个小时,
所以你的中控服务器必须能够定时去拉取最新的access_token。
下面我们设置一个非常简单的中控服务器
此中控服务器需要有以下几个特点:
1。可以定时执行
2.拉取到最新access_token可以持久化
3.持久化的access_token可以被其他相关服务访问到。
<强>节点。js下定时任务强>
我们采用node-schedule
npm安装node-schedule——保存 >之前schedule.scheduleJob (A, B)
scheduleJob方法接收2个参数,一个为日期规则(多长时间执行),,B为回调方法(当日期符合条件时,将要做什么)
先来看下参数:
# #六颗星方式
“* * * * * *”
┬,,,,┬,,,┬,,,┬,,,┬,,,┬
│,,,│,,,│,,,│,,,│,,,,|
│,,,│,,,│,,,│,,,│,,,└星期几(0 - 7)(0或者7表示星期日)
│,,,│,,,│,,,│,,,└─────月份(1 - 12)
│,,,│,,,│,,,└──────────日期(1 - 31)
│,,,│,,,└───────────────小时(0 - 23)
│,,,└────────────────────分钟(0 - 59)
└─────────────────────────秒(0 - 59)下面用此方式我们约定在8月30日0点0分0秒执行程序。
对应的参数一个设置如下:
“30 0 0 0 8 *”var m=时间表。scheduleJob(30 0 0 0 8 *,函数(){ getToken (); }); >之前
上面的getToken()是我自定义的一个获取微信access_token的方法,下面会有说明。
设置每30秒执行一次定时任务
“30 * * * * *”设置每1分30秒执行一次任务
“30 1 * * * *”设置凌晨0点1分30秒执行任务
“30 1 0 * * *”RecurrenceRule方式
//定义一个时间规则 var=new schedule.RecurrenceRule规则();//规则。dayOfWeek=0;//规则。月=0;//规则。dayOfMonth=0;//规则。小时=0;//规则。分钟=0; 规则。第二个=0; 时间表。scheduleJob(规则、功能(){ getToken (); }); >之前创建了一个RecurrenceRule对象,它有6个属性,分别对应星期,月份,日期,小时,分钟,秒
通过各个参数来设置你的时间规则器。上面介绍了,节点。js下使用node-schedule来执行定时任务,下面我们来看下如何获取微信access_token
<强>获取微信access_token
强>得到请求方式:
https://api.weixin.qq.com/cgi-bin/token& # 63; grant_type=client_credential& appid={appid},秘密={APPSECRET}注意上面的{APPID}和{APPSECRET}要登录微信公众后台获取。
下面我们使用请求来提交一个会请求即可:
<代码> npm安装请求——保存代码>
我们还用到了复述,npm安装复述——保存
var客户=redis.createClient ({ :“主机127.0.0.1”, “端口”:“6379” }); var getToken=function () { var=util.format url (https://api.weixin.qq.com/cgi-bin/token& # 63; grant_type=client_credential& appid=% s&秘密=% s ', wechat.appid, wechat.secret); 请求(url,函数(误差、响应身体){ 如果(!错误,,响应。statusCode==200) { var bodyToken=JSON.parse(身体); 如果(bodyToken&, bodyToken.access_token) { setToken (bodyToken.access_token); } } }) } var setToken=函数(令牌){ 如果(令牌){ client.set (“YG-WECHAT-TOKEN”,令牌); } } >之前每小时执行一次定时任务getToken ()
节点。js微信开发之定时获取access_token