评论

”素颜流“小程序云开发之获取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
};

点赞 0
收藏
评论

2 个评论

  • 清晴@shuyou.liu
    清晴@shuyou.liu
    2019-04-08

    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

    }

    }


    2019-04-08
    赞同
    回复
  • 悟空
    悟空
    2019-04-08

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


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

    2019-04-08
    赞同
    回复 5
    • 清晴@shuyou.liu
      清晴@shuyou.liu
      2019-04-08

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

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

      2019-04-08
      回复
    • 清晴@shuyou.liu
      清晴@shuyou.liu
      2019-04-08

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







      2019-04-08
      回复
    • 粗茶淡饭
      粗茶淡饭
      2019-04-08回复清晴@shuyou.liu

      模板id 和formid 没有问题吗?

      2019-04-08
      回复
    • 清晴@shuyou.liu
      清晴@shuyou.liu
      2019-04-08回复粗茶淡饭

      这两个是例子里的没做修改。 应该是有问题的。 你测试能过吗?

      2019-04-08
      回复
    • 粗茶淡饭
      粗茶淡饭
      2019-04-08回复清晴@shuyou.liu

      小程序的我写过 配好模板 接口  然后把参数传给后台 后台去访问服务接口  我在前端也测试过 把不校验域名勾上 也能发消息  但是云开发的没写过 刚接触 但是你没有模板id 和formid 肯定不行啊

      2019-04-08
      回复
登录 后发表内容