请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

无法获取accesstoken,把自己的appid和密钥填写入老师的代码还是不行。

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

正在回答 回答被采纳积分+3

2回答

谢成 2022-01-26 20:26:40

在这两个地方增加上return:

https://img1.sycdn.imooc.com//szimg/61f13dec09098c1f18581330.jpg

1 回复 有任何疑惑可以回复我~
  • 提问者 T_M_T #1
    刚试了下 还是不行,又用postman试了试是可以的,前一天跟着课程敲是没问题的,很奇怪啊。
    回复 有任何疑惑可以回复我~ 2022-01-26 22:55:15
提问者 T_M_T 2022-01-26 23:00:40

修改后的代码,还是没能成功获取。

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 回复 有任何疑惑可以回复我~
  • 提问者 T_M_T #1
    刚试了下,把49行updateAccessToken()放开,是可以获取到Token的。
    回复 有任何疑惑可以回复我~ 2022-01-26 23:56:09
  • 提问者 T_M_T #2
    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 23:58:36
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信