前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >使用laf云函数进行微信公众号全局access_token缓存

使用laf云函数进行微信公众号全局access_token缓存

作者头像
薛定喵君
发布2023-07-24 18:58:12
2680
发布2023-07-24 18:58:12
举报
文章被收录于专栏:薛定喵君薛定喵君

记录如何使用laf云函数缓存公众号全局access_token

# 背景

平时会用laf云做一些小工具,最近在做公众号相关调研时遇到了缓存token的问题,每天只允许调用2000次,所以需要将公众平台的API调用所需的access_token缓存下来。

我们可以借用laf的云函数来做这个中控服务器统一获取和刷新access_token。

# 实现方法

  1. 在laf云新建云函数(例如:wxAccessToken)后输入如下代码:
代码语言:javascript
复制
import cloud from '@lafjs/cloud'
const db = cloud.database()
export default async function (ctx: FunctionContext) {
  let accessToken = await db.collection('access_token').getOne()
  let expires_time = accessToken.data ? accessToken.data.expires_time : null
  let tokenInfo = {}
  if (expires_time == null || Math.floor(Date.now() / 1000) > expires_time + 3600) {
    let params = {
      method: "get",
      url: `https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=[your appid]&secret=[your secret]`
    }
    tokenInfo = await cloud.fetch(params);
    let accInfo = {
      access_token: tokenInfo.data.access_token,
      expires_time: Math.floor(Date.now() / 1000) + 3600
    }
    if (expires_time == null) {
      await db.collection('access_token').add(accInfo);
    } else {
      await db.collection('access_token').update(accInfo);
    }
    tokenInfo = accInfo
  } else {
    const { access_token, expires_time } = accessToken.data
    tokenInfo = {
      access_token: access_token,
      expires_time: expires_time
    }
  }
  return tokenInfo
}

这样我们就会每隔一小时刷新一次access_token了

  1. 调用函数。为了方便我们可以以get方式调用:
代码语言:javascript
复制
https://[your laf domain]/wxAccessToken

可以看到类似如下的返回值:

代码语言:javascript
复制
{
    "access_token":"xxxxxxxxxxx",
    "expires_time":1689392208
}

# 问题处理

在云函数中会请求微信服务器,从而提示如下错误:

代码语言:javascript
复制
data: {
    errcode: 40164,
    errmsg: 'invalid ip 124.4.21.15 ipv6 ::ffff:124.4.21.15, not in whitelist rid: 64b224c9-40fbffe4-2d188be7'
  }

这时我们只需要把错误信息中提示的IP地址添加到公众号后台的白名单当中就可以了。

# 参考资料

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2023-07-15 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • # 背景
  • # 实现方法
  • # 问题处理
  • # 参考资料
相关产品与服务
云函数
云函数(Serverless Cloud Function,SCF)是腾讯云为企业和开发者们提供的无服务器执行环境,帮助您在无需购买和管理服务器的情况下运行代码。您只需使用平台支持的语言编写核心代码并设置代码运行的条件,即可在腾讯云基础设施上弹性、安全地运行代码。云函数是实时文件处理和数据处理等场景下理想的计算平台。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档