无法获取accesstoken,把自己的appid和密钥填写入老师的代码还是不行。
来源:9-5 HTTP API触发云函数获取歌单列表
T_M_T
2022-01-26
无法获取accesstoken,把自己的appid和密钥填写入老师的代码还是不行。
前一天还是可以获取的,试了试五秒获取也是可以的。到了下一课该获取musiclist了,发现报了个token无效,又返回去执行getAccessToken,果然不行了。
1.把代码检查了三遍,发现没问题,再试还是不行,代码就没走出rp(URL)。
2.把URL直接粘进浏览器(替换参数),不行。
3.直接把自己的id和密钥粘贴进入老师的代码,执行 node getAccessToken 还是不行。
const rp = require('request-promise')
const APPID = '···············'
const APPSECRET = '····················'
const URL = `https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=${APPID}&secret=${APPSECRET}`
const fs = require('fs')
const path = require('path')
const fileName = path.resolve(__dirname, './access_token.json')
const updateAccessToken = async () => {
const resStr = await rp(URL)
const res = JSON.parse(resStr)
console.log(res)
// 写文件
if (res.access_token) {
fs.writeFileSync(fileName, JSON.stringify({
access_token: res.access_token,
createTime: new Date()
}))
} else {
await updateAccessToken()
}
}
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 (error) {
await updateAccessToken()
await getAccessToken()
}
}
setInterval(async () => {
await updateAccessToken()
}, (7200 - 300) * 1000)
// updateAccessToken()
// console.log(getAccessToken())
module.exports = getAccessToken
写回答
2回答
-
谢成
2022-01-26
在这两个地方增加上return:
112022-01-26 -
T_M_T
提问者
2022-01-26
修改后的代码,还是没能成功获取。
const rp = require('request-promise') // const APPID = '············' // const APPSECRET = '··········' const APPID = '·······' const APPSECRET = '·········' const URL = `https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=${APPID}&secret=${APPSECRET}` const fs = require('fs') const path = require('path') const fileName = path.resolve(__dirname, './access_token.json') const updateAccessToken = async () => { const resStr = await rp(URL) const res = JSON.parse(resStr) console.log(res) // 写文件 if (res.access_token) { fs.writeFileSync(fileName, JSON.stringify({ access_token: res.access_token, createTime: new Date() })) } else { await updateAccessToken() } } 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() return await getAccessToken() } return readObj.access_token } catch (error) { await updateAccessToken() return await getAccessToken() } } setInterval(async () => { await updateAccessToken() }, (7200 - 300) * 1000) // updateAccessToken() // console.log(getAccessToken()) module.exports = getAccessToken
022022-01-26