Nodejs开发微信公众号中控服务

本文介绍了一个使用Node.js和Egg.js框架开发的微信公众号中控服务项目。该项目旨在为多个微信公众号提供统一的管理和服务,包括后台签名验证、消息处理、获取access_token等功能。通过定时任务自动更新access_token,并利用Redis作为内存数据库存储关键信息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本项目旨在为多个微信公众号提供中控服务, 包含以下服务内容:

  • 校验后台签名配置
  • 处理微信公众号消息
  • 获取access_token
  • 获取jssdk签名
  • 自定义菜单

本项目采用的技术选型为:

  • 开发语言 nodejs
  • 开发框架 eggjs
  • 内存数据库 redis

本篇文章主要从以下4个方面来实现这个中控服务:

  • eggjs插件和配置
  • 定时任务获取token等信息
  • 路由定义和controller层接收并处理参数
  • service层实现

以下为具体的实现步骤:

一、eggjs插件和配置

添加egg-redis和xml2js依赖库, 并开启egg-redis插件

配置解析微信公众号传递的xml数据

配置redis

配置多个微信公众号的菜单, appId, appSecret 以及 redis中accessToken和jssdk的key

二、定时任务获取token等信息

三、路由定义和controller层接收并处理参数

路由定义

controller层接收并处理参数

四、service层实现

extend/help.js文件内容如下:

 

福利: 本文已同步到我的个人技术网站 IT干货-sufaith 该网站包括Python, Linux, Nodejs, 前端开发等模块, 专注于程序开发中的技术、经验总结与分享, 欢迎访问.

微信中控服务器(一个获取微信 access_token 和 ticket 的服务).zip wechat-token-proxy 是一个获取微信 access_token 和 ticket 的服务。它能使调用微信公众号各接口的各个业务逻辑点共享 access_token 和 ticket ,避免产生冲突。 说到这个冲突,就得先了解微信的 access_token 。引用微信官方的描述: access_token是公众号的全局唯一票据,公众号调用各接口时都需使用access_token。开发者需要进行妥善保存。access_token的存储至少要保留512个字符空间。access_token的有效期目前为2个小时,需定时刷新,重复获取将导致上次获取的access_token失效。 如果第三方不使用中控服务器,而是选择各个业务逻辑点各自去刷新access_token,那么就可能会产生冲突,导致服务不稳定。 详见微信官网 微信限定每天只能调用2000次刷新access_token的接口。换言之,每次调用公众号接口时都刷新access_token的话,很有可能超出2000次/日的限制。 开发 wechat-token-proxy 的目的,是为了让众多的业务逻辑点能和谐调用微信公众号的接口,共享access_token,减少一个令业务服务不稳定的因素。 项目文件说明 |文件名|功能简介| |:--------:|------| |conf/wx_config.json|设置微信 app_id 和 app_secret| |destinations/wx_flush_access_token.js|获取access_token| |shipper.js|将access_token写到文件, 或读取access_token| |refresher/wx_access_token.json|此文件保存access_token的值| |schedule.js|定时执行wx_flush_access_token.js| |app.js|通过http方式输出json格式的access_token| |conf/access.json|设置允许访问此服务的 IP 或 域名| 如何使用 由于使用了 express 框架,启动 wechat-token-proxy 只需要执行 app.js 文件。具体步骤如下: clone 项目 git clone .git 进入 wechat-token-proxy 文件夹,并安装依赖模块 cd wechat-token-proxy npm install 设置 conf/wx_config.json 和 conf/access.json 两个文件。 wx_config.json 内容如下: { "app_id": "微信公众号的AppID", "app_secret": "微信公众号的AppSecret" } access.json 内容如下: { "ip": ["127.0.0.1"], "hostname": ["localhost"] } 启动项目 node app.js 打开浏览器 访问 http://localhost:3000 获取 access_token; 访问 http://localhost:3000/ticket 获取 ticket。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值