节点。js微信开发之定时获取access_token

  

<强>什么是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