0
收藏

”素颜流“小程序云开发之获取accesstoken代码分享

获取accesstoken 并缓存,做到获取的次数合理

const cloud = require(‘wx-server-sdk’)
const rp = require(‘request-promise’);
cloud.init()
async function getAccessToken(){
console.log(‘getAccessToken’)
const S_TO_MS = 1000; // 秒到毫秒的转换。
if (!global.access_token || !global.access_token.timestamp ||
!global.access_token.expires_in ||
global.access_token.timestamp + global.access_token.expires_in * S_TO_MS <= new Date() - 300) {
console.log(‘getAccessToken 缓存无效’)
//appid 和秘钥
const appid = ‘你的appid’, secret = ‘你的secret’
const AccessToken_options = {
method: ‘GET’,
url: ‘https://api.weixin.qq.com/cgi-bin/token’,
qs: {
appid,
secret,
grant_type: ‘client_credential’
},
json: true
};
//获取AccessToken
const resultValue = await rp(AccessToken_options);

    const token = resultValue.access_token
    global.access_token = {
      access_token: token,
      timestamp: new Date(),
      expires_in: resultValue.expires_in
    }

    return resultValue.access_token
}else{
    const access_token = global.access_token.access_token;
    console.log('缓存缓存缓存', access_token)
    return access_token
}

}

// 云函数入口函数
exports.main = async (event, context) => {
const token = await getAccessToken()
console.log(token)
return token
};

最后一次编辑于  04-08  (未经腾讯允许,不得转载)
收藏赞 0

2 个评论

  • 清晴@shuyou.liu
    清晴@shuyou.liu

    async function gettoken() {

    const appid = '。。。', secret = '。。。。'

    const AccessToken_options = {

    method: 'GET',

    url: 'https://api.weixin.qq.com/cgi-bin/token',

    qs: {

    appid,

    secret,

    grant_type: 'client_credential'

    },

    json: true

    };

    //获取AccessToken

    const resultValue = await rp(AccessToken_options);

    return resultValue

    }


    async function cacheToken(){

    let t4 = process.uptime()

    let token

    let status = '-'

    if (global.expires_in >= (t4 - 3)) {

    status = '缓存'

    token = global.atoken

    } else {

    status = '无缓存'

    let atoken = await gettoken()

    global.atoken = atoken

    global.expires_in = process.uptime() + atoken.expires_in

    token = global.atoken

    }

    return {

    t4, status, token

    }

    }


    赞同 0没有帮助
    评论 0
    复制
    04-08
  • 悟空
    悟空

    云调用出来后就不用这么麻烦单独获取access_token了


    https://developers.weixin.qq.com/miniprogram/dev/wxcloud/guide/functions/openapi.html

    赞同 0没有帮助
    评论 5
    复制
    04-08
    • 清晴@shuyou.liu
      清晴@shuyou.liu

      谢谢, 看到了。    openapi 我试验鉴黄的时候总出错。 我现在去按着文章试试。   非常感谢!

      对了, 我想用云函数开发一个小商城,但调试很不方便, 有啥建议吗?

      赞同 0没有帮助
      回复
      复制
      04-08
    • 清晴@shuyou.liu
      清晴@shuyou.liu

      我试验了一次, 还是出问题。 是不是我哪里配置错了呢? 帮我看看







      赞同 0没有帮助
      回复
      复制
      04-08
    • 守夜
      守夜
      回复清晴@shuyou.liu

      模板id 和formid 没有问题吗?

      赞同 0没有帮助
      回复
      复制
      04-08
    • 展示更多
    评论