koa-获取微信access-token

Posted baisedeyu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了koa-获取微信access-token相关的知识,希望对你有一定的参考价值。

const rp=require(‘request-promise‘)
const APPID=‘xxxxxxxxx‘
const AppSecret=‘xxxxxxxxxxxxxx‘
const URL=`https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=${APPID}&secret=${AppSecret}`
const path=require(‘path‘)
//输出绝对路径
const fileName=path.resolve(__dirname,‘./access_token.json‘)


const fs=require(‘fs‘)

const updateAccessToken=async ()=>{
  const resStr=await rp(URL)
  const res=JSON.parse(resStr)
  // 写文件
  if(res.access_token){
    fs.writeFileSync(fileName,JSON.stringify({
      access_token:res.access_token,
      createTime:new Date()
    }))
  }else{
    //如果失败 继续发送请求
    await updateAccessToken()
  }
}

//因为accessToken 每2小时更新一次  所以适当提前5分钟刷新
setInterval(()=>{
  await updateAccessToken()
},69000000)

const getAccessToken=async()=>{
  //读取文件
  try{
    const readRes=fs.readFileSync(fileName,‘utf8‘)
    const readObj=JSON.parse(readRes)
    const createTime=new Date(readObj.createTime).getTime()
    const nowTime=new Date().getTime()
    //如果更新的时候断线了 重新获取
    if((nowTime-createTime)/1000/60/60>=2){
      await updateAccessToken()
      await getAccessToken()
    }
    return readObj.access_token
  }catch(err){
    //刚启动的时候没有 所以读取失败  所以新更新
    await updateAccessToken()
    await getAccessToken()
  }

}

module.exports=getAccessToken

 

以上是关于koa-获取微信access-token的主要内容,如果未能解决你的问题,请参考以下文章

微信获得access-token

nodejs+koa+uniapp实现微信小程序登陆获取用户手机号及openId

微信公众号获取图片素材接口

nodejs开发微信1——微信access-token和tickets的数据模型

使用koa2开发微信公众号之网页授权

微信小程序全栈开发课程课程目录(mpvue+koa2+mysql)