发表于: 2020-06-12 20:20:07

2 1976




今天完成的事情:

1.推进任务


明天计划的事情:

1.推进任务


遇到的问题和收获:


跟着教程写了些东西。想测试一下获取的数据


//义类access_token
class Wechat {

/*来获access_token*/
   getAccessToken() {

//义请求的地址
       const url = `https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=${appID}&secret=${appsecret}`

       //
       /*
       使用
       request
       request-promise-native 返回是一promise
       * */
       return new Promise((resolve, reject) => {
rp({
method: 'GET',
url,
json: true//送的转为json
           }).then(res => {
console.log(res);
/*
                           //access_token时间,+5,后面时间小于这个过时间还没.
               res.expires_in = Date.now() + (res.expires_in - 5 * 60) * 1000//秒乘以1000

               //promise状态改成成功的状态
               resolve(res)

}).catch(err => {
console.log(err);
//promise状态改成失状态
               reject('getAccessToken方法出了问题:' + err)
})
})

}


/*
       *保存access_token
       * accessToken是要保存的
   */
   saveAccessToken(accessToken) {
//将对json字符串,不然保存的object
       accessToken = JSON.stringify(accessToken)

//access_token保存一文件
       return new Promise((resolve, reject) => {
writeFile('./accessToken.txt', accessToken, err => {
if (!err) {
console.log('文件保存成功');
resolve()
} else {
reject('saveAccessToken方法出了问题:' + err)
}
})
})
}


/*
   * 来读access_token
   * */
   readAccessToken() {
//取本地文件中的access_token
       return new Promise((resolve, reject) => {
readFile('./accessToken.txt', (err, data) => {
if (!err) {
console.log('文件取成功');
//saveAccessToken方法里化的字符串accessTokenjs
                   data = JSON.parse(data)
console.log(data);
resolve(data)
} else {
reject('readAccessToken方法出了问题:' + err)
}
})
})
}

/*
   * 来检查access_token是否有效
   * */
   isValidAccessToken(data) {
       if (!data && !data.access_token && !data.expires_in) {
//代表access_token是无效的
           return false
       }

//检测access_token是否在有效期,如果时间过过时间则过期了
       return data.expires_in >= Date.now();
}


/*
   * 来获期的access_token
   * */
   fetchAccessToken() {

       //
       if (this.access_token && this.expires_in && this.isValidAccessToken(this)) {
//明之前保存acces_token是有效的,直接使用
           return Promise.resolve({
access_token: this.access_token,
expires_in: this.expires_in
})
}
//fetchAccessToken的返回
       return this.readAccessToken()
.then(async res => {
//本地有文件
               if (this.isValidAccessToken(res)) {
//有效的
                   resolve(res)
} else {

                   const res = await this.getAccessToken()
                   await this.saveAccessToken(res)
                   return Promise.resolve(res)

               }

})
.catch(async err => {
                   const res = await this.getAccessToken()
                   await this.saveAccessToken(res)
return Promise.resolve(res)
               }
)
.then(res => {

               this.access_token = res.access_token
this.expires_in = res.expires_in

               return Promise.resolve(res)
})
// })
   }
}


不过师兄讲我关注的点不应该是这里。

以上代码并不能完全看明白。所以还是准备看其他的


可以现在准备下复盘了吗,这个任务现在还不太清楚怎么做





返回列表 返回列表
评论

    分享到