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 机制和实现方式
# 键名
# 文档
# 第三方
# 都是
# 在这里
# 如有
# 两种
# 均为
# 得很
# 要用
# 可以直接
# 大同小异
# 向外
# 先去
# 想用
# 两块
# 需要注意
# 时用
# 所写
# 大家多多
相关文章:
如何在沈阳梯子盘古建站优化SEO排名与功能模块?
武汉网站如何制作,黄黄高铁武穴北站途经哪些村庄?
如何高效配置IIS服务器搭建网站?
建站之星代理如何获取技术支持?
导航网站建站方案与优化指南:一站式高效搭建技巧解析
如何在企业微信快速生成手机电脑官网?
宝盒自助建站智能生成技巧:SEO优化与关键词设置指南
交易网站制作流程,我想开通一个网站,注册一个交易网址,需要那些手续?
代刷网站制作软件,别人代刷火车票靠谱吗?
建站主机SSH密钥生成步骤及常见问题解答?
惠州网站建设制作推广,惠州市华视达文化传媒有限公司怎么样?
一键制作网站软件下载安装,一键自动采集网页文档制作步骤?
如何有效防御Web建站篡改攻击?
如何快速上传建站程序避免常见错误?
建站之星导航如何优化提升用户体验?
最好的网站制作公司,网购哪个网站口碑最好,推荐几个?谢谢?
如何确认建站备案号应放置的具体位置?
历史网站制作软件,华为如何找回被删除的网站?
手机钓鱼网站怎么制作视频,怎样拦截钓鱼网站。怎么办?
rsync同步时出现rsync: failed to set times on “xxxx”: Operation not permitted
建站之星×万网:智能建站系统+自助建站平台一键生成
湖州网站制作公司有哪些,浙江中蓝新能源公司官网?
如何通过VPS搭建网站快速盈利?
建站主机选购指南:核心配置与性价比推荐解析
建站主机数据库如何配置才能提升网站性能?
建站之星IIS配置教程:代码生成技巧与站点搭建指南
如何自定义建站之星网站的导航菜单样式?
陕西网站制作公司有哪些,陕西凌云电器有限公司官网?
网站制作专业公司有哪些,如何制作一个企业网站,建设网站的基本步骤有哪些?
如何续费美橙建站之星域名及服务?
代购小票制作网站有哪些,购物小票的简要说明?
建站之星备案流程有哪些注意事项?
成都网站制作价格表,现在成都广电的单独网络宽带有多少的,资费是什么情况呢?
利用JavaScript实现拖拽改变元素大小
武汉网站设计制作公司,武汉有哪些比较大的同城网站或论坛,就是里面都是武汉人的?
创业网站制作流程,创业网站可靠吗?
制作销售网站教学视频,销售网站有哪些?
太原网站制作公司有哪些,网约车营运证查询官网?
网站制作的步骤包括,正确网址格式怎么写?
无锡营销型网站制作公司,无锡网选车牌流程?
怎么制作一个起泡网,水泡粪全漏粪育肥舍冬季氨气超过25ppm,可以有哪些措施降低舍内氨气水平?
如何选择可靠的免备案建站服务器?
宝塔面板创建网站无法访问?如何快速排查修复?
如何快速生成ASP一键建站模板并优化安全性?
宠物网站制作html代码,有没有专门介绍宠物如何养的网站啊?
在线ppt制作网站有哪些,请推荐几个好的课件下载的网站?
如何快速查询网址的建站时间与历史轨迹?
网站制作服务平台,有什么网站可以发布本地服务信息?
北京网站制作网页,网站升级改版需要多久?
ppt制作免费网站有哪些,ppt模板免费下载网站?
*请认真填写需求信息,我们会在24小时内与您取得联系。