无法获取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:

//img.mukewang.com/szimg/61f13dec09098c1f18581330.jpg

1
1
T_M_T
刚试了下 还是不行,又用postman试了试是可以的,前一天跟着课程敲是没问题的,很奇怪啊。
2022-01-26
共1条回复

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


0
2
T_M_T
music-admin\music-admin-backend> node .\app.js 服务开启了,3000端口 { access_token: '53_NLRAlgxZgf2jx3Erfacwt6kWbvMZr1QmOW_rDFajrSHYCP5OCVs8MMcxji9V5hhZdTnKm0YgzF3UQ0PUY1Ka7sjh1troqPBaEaToXil9IUNyUSQyQZBw8TD5NAqUr3eyZorbYZN7mXgyHyP9OLPcAHAKHL', expires_in: 7200 } { errcode: 41001, errmsg: 'access_token missing rid: 61f16f70-310a48c2-1cbde9b7' }
2022-01-26
共2条回复

微信小程序云开发-从0打造云音乐全栈小程序

横跨小程序端、云后端、CMS一站式云开发的小程序全栈课程

1938 学习 · 2768 问题

查看课程