Node.js微信 access_token ( jsapi_ticket ) 存取与刷新的示例
发布时间 - 2026-01-11 03:29:57 点击率:次access_token

微信文档里存在两种access_token:普通 access_token 和 网页授权 access_token。具体区别参考:https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140842
以下提到的 access_token 均为普通的 access_token
1. 首先我们先去看看是如何请求 access_token 的? 微信公众平台技术文档
GET请求:https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET
正常返回:{"access_token":"ACCESS_TOKEN","expires_in":7200}
错误返回:{"errcode":40013,"errmsg":"invalid appid"}
2. 所以获取 access_token 的代码如下:
const request = require('request') // 请安装第三方包 request
request.get({
uri: 'https://api.weixin.qq.com/cgi-bin/token',
json: true,
qs: {
grant_type: 'client_credential',
appid: APPID, // APPID请换成你的 appid
secret: APPSECRET // APPSECRET请换成你的 appsecret
}
}, (err, res, body) => {
if (err) {
console.log(err)
return
}
console.log(body)
if (body.errcode) {
// 返回错误时的处理
return
}
})
3. guard_dog 实现数据持久化和定时刷新
guard_dog 会生成 .dog 文件,每个文件对应一个KEY
const guard_dog = require('guard_dog') // 请安装第三方包 guard_dog
guard_dog.init(KEY, (handler) => { // KEY是guard_dog存取数据的键名
// 拿到数据后调用 handler
handler(DATA, EXPIREDS_IN) // DATA是要持久化的数据,EXPIREDS_IN是数据的有效时间,单位是秒
}, DIR) // DIR是 .dog 文件的存放目录,这个参数可以不传
4. 现在把以上两块代码合并起来就是我们要的效果
const request = require('request')
const guard_dog = require('guard_dog')
guard_dog.init('ACCESS_TOKEN', (handler) => {
request.get({
uri: 'https://api.weixin.qq.com/cgi-bin/token',
json: true,
qs: {
grant_type: 'client_credential',
appid: APPID, // APPID请换成你的 appid
secret: APPSECRET // APPSECRET请换成你的 appsecret
}
}, (err, res, body) => {
if (err) {
console.log(err)
return
}
console.log(body)
if (body.errcode) {
return
}
handler(body.access_token, body.expires_in)
})
}) // 如有需要指定目录,可以再给 guard_dog.init 多传个参数
5. guard_dog 初始化这个 key 之后,获取到的都是有效的值了。guard_dog 获取值代码如下:
guard_dog.get('ACCESS_TOKEN', (data) => { // 上面初始化时用的键名为'ACCESS_TOKEN',所以这里取值也要用这个键名
// 在这里拿到的 data 就是 access_token 了
})
6.如果想用着方便点,可以直接封装成一个模块
access_token.js
const request = require('request')
const guard_dog = require('guard_dog')
// 加载这个模块的时候给 ACCESS_TOKEN 这个键名初始化
guard_dog.init('ACCESS_TOKEN', (handler) => {
request.get({
uri: 'https://api.weixin.qq.com/cgi-bin/token',
json: true,
qs: {
grant_type: 'client_credential',
appid: APPID, // APPID请换成你的 appid
secret: APPSECRET // APPSECRET请换成你的 appsecret
}
}, (err, res, body) => {
if (err) {
console.log(err)
return
}
console.log(body)
if (body.errcode) {
return
}
handler(body.access_token, body.expires_in)
})
})
// 只要向外暴露一个获取值的方法就可以了
module.exports = function (callback) {
guard_dog.get('ACCESS_TOKEN', callback)
}
使用:
const access_token = require('./access_token') // 这里把这个模块与 access_token 模块当成在同一目录下来作为例子。
access_token((data) => {
// 这个 data 就是 access_token
})
jsapi_ticket
jsapi_ticket 官方文档说明
上面关于 access_token 的例子已经说得很详细了,jsapi_ticket 处理起来也大同小异,所以下面直接贴代码了:
(需要注意一点:获取 jsapi_ticket 需要依赖 access_token,下面的代码直接依赖了上面所写的 access_token.js)
jsapi_ticket.js
const request = require('request')
const guard_dog = require('guard_dog')
const access_token = require('./access_token')
guard_dog.init('JSAPI_TICKET', (handler) => {
access_token((access_token) => {
request.get({
uri: 'https://api.weixin.qq.com/cgi-bin/ticket/getticket',
json: true,
qs: {
access_token: access_token,
type: 'jsapi'
}
}, (err, res, body) => {
if (err) {
console.log(err)
return
}
console.log(body)
if (body.errcode) {
return
}
handler(body.ticket, body.expires_in)
})
})
})
module.exports = function (callback) {
guard_dog.get('JSAPI_TICKET', callback)
}
使用:
const jsapi_ticket = require('./jsapi_ticket')
jsapi_ticket((data) => {
// 这个 data 就是 jsapi_ticket
})
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
# Node.js微信
# access_token
# Node
# jsapi_ticket
# Node.js
# access_token存储
# vue项目中js-cookie的使用存储token操作
# 详解Node.js使用token进行认证的简单示例
# node.js 微信开发之定时获取access_token
# NodeJs crypto加密制作token的实现代码
# php实现JWT(json web token)鉴权实例详解
# 详解JSON Web Token 入门教程
# node.js+captchapng+jsonwebtoken实现登录验证示例
# 详解Node.js access_token的获取、存储及更新
# JSON Web Tokens的实现原理
# JS提示:Uncaught SyntaxError: Unexpected token ILLEGA
# JS提示:Uncaught SyntaxError:Unexpected token ) 错误的解决
# token 机制和实现方式
# 键名
# 文档
# 第三方
# 都是
# 在这里
# 如有
# 两种
# 均为
# 得很
# 要用
# 可以直接
# 大同小异
# 向外
# 先去
# 想用
# 两块
# 需要注意
# 时用
# 所写
# 大家多多
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
Laravel如何处理JSON字段的查询和更新_Laravel JSON列操作与查询技巧
Laravel Fortify是什么,和Jetstream有什么关系
如何在建站之星网店版论坛获取技术支持?
Win11怎么设置默认图片查看器_Windows11照片应用关联设置
如何快速搭建高效WAP手机网站吸引移动用户?
如何挑选高效建站主机与优质域名?
Java垃圾回收器的方法和原理总结
创业网站制作流程,创业网站可靠吗?
CSS3怎么给轮播图加过渡动画_transition加transform实现【技巧】
Laravel如何正确地在控制器和模型之间分配逻辑_Laravel代码职责分离与架构建议
Edge浏览器提示“由你的组织管理”怎么解决_去除浏览器托管提示【修复】
Laravel如何集成微信支付SDK_Laravel使用yansongda-pay实现扫码支付【实战】
如何快速生成高效建站系统源代码?
如何确保西部建站助手FTP传输的安全性?
佛山企业网站制作公司有哪些,沟通100网上服务官网?
php打包exe后无法访问网络共享_共享权限设置方法【教程】
高性价比服务器租赁——企业级配置与24小时运维服务
Android实现代码画虚线边框背景效果
北京网站制作公司哪家好一点,北京租房网站有哪些?
谷歌浏览器如何更改浏览器主题 Google Chrome主题设置教程
通义万相免费版怎么用_通义万相免费版使用方法详细指南【教程】
如何在 React 中条件性地遍历数组并渲染元素
北京企业网站设计制作公司,北京铁路集团官方网站?
三星网站视频制作教程下载,三星w23网页如何全屏?
专业型网站制作公司有哪些,我设计专业的,谁给推荐几个设计师兼职类的网站?
开心动漫网站制作软件下载,十分开心动画为何停播?
1688铺货到淘宝怎么操作 1688一键铺货到自己店铺详细步骤
详解Android中Activity的四大启动模式实验简述
Python企业级消息系统教程_KafkaRabbitMQ高并发应用
如何在VPS电脑上快速搭建网站?
bootstrap日历插件datetimepicker使用方法
重庆市网站制作公司,重庆招聘网站哪个好?
美食网站链接制作教程视频,哪个教做美食的网站比较专业点?
Laravel如何编写单元测试和功能测试?(PHPUnit示例)
Laravel如何发送邮件_Laravel Mailables构建与发送邮件的简明教程
Laravel怎么使用Collection集合方法_Laravel数组操作高级函数pluck与map【手册】
中国移动官方网站首页入口 中国移动官网网页登录
Laravel怎么生成二维码图片_Laravel集成Simple-QrCode扩展包与参数设置【实战】
Thinkphp 中 distinct 的用法解析
实例解析angularjs的filter过滤器
如何在 Pandas 中基于一列条件计算另一列的分组均值
如何自己制作一个网站链接,如何制作一个企业网站,建设网站的基本步骤有哪些?
如何快速重置建站主机并恢复默认配置?
如何用西部建站助手快速创建专业网站?
利用 Google AI 进行 YouTube 视频 SEO 描述优化
Laravel怎么实现微信登录_Laravel Socialite第三方登录集成
手机网站制作平台,手机靓号代理商怎么制作属于自己的手机靓号网站?
如何在阿里云通过域名搭建网站?
微信小程序 canvas开发实例及注意事项
Laravel安装步骤详细教程_Laravel环境搭建指南

