云音乐小程序管理系统(二)—— 接口调用凭证access_token的缓存与更新

一、access_token调用

小程序的access_token是在官方文档下的服务端——接口调用凭证
云音乐小程序管理系统(二)—— 接口调用凭证access_token的缓存与更新_第1张图片

接下来就是获取我们的access_token
云音乐小程序管理系统(二)—— 接口调用凭证access_token的缓存与更新_第2张图片
我们将文档中的GET的URL其中的关键字换成自己的信息

千万不要将他们作为字符引用,我尝试过了,一直在报错显示识别不到

然后将URL请求发送出去,就可以先看一下返回效果是否正确。
在这里插入图片描述
返回了一个access_token字符串和7200s的凭证有效时间。

这个时候我们写入一个文件,将我们的access_token信息存入进去做定时刷新。
云音乐小程序管理系统(二)—— 接口调用凭证access_token的缓存与更新_第3张图片
在写入文件之后,我们在使用时读取access_token,将信息输出,并且根据小程序的官方文档做两个小时的定时刷新,并且与当前时间进行预判,在服务器死机而导致时间大于两个小时而新的access_token没有产生时,我们让机器自我开始转化进行输出。

const getAccessToken = async ()=>{
     
    //读取文件
    try{
     
        const readRes = fs.readFileSync(fileName,'utf8')
        const readObj=JSON.parse(readRes)
        //判断创建时间是否与获取的时间相差超过了2小时,预防服务器死机或重启,getTime()将时间转换为毫秒数
        const createTime=new Date(readObj.createTime).getTime() 
        const nowTime=new Date().getTime()
        if(nowTime-createTime>=7200*1000)
        {
     
            await updateAccessToken()
            await getAccessToken()
        }
        return readObj.access_token
    }catch(reeor){
     
        //如果检测到文件不存在,那么重新写入文件再次读取
        await updateAccessToken()
        await getAccessToken()
    }
   
}

//因为每个access_token有效期为2小时,所以需要定时刷新,开启定时器更新
setInterval(()=>{
     
    await updateAccessToken()
},(7200-300)*1000)//减300是因为官方文档要求5分钟的新旧access_token过渡

之后在其他文件调用本方法时,将方法进行输出

module.exports=getAccessToken()

你可能感兴趣的:(小程序,前端学习)