全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

Node.js微信 access_token ( jsapi_ticket ) 存取与刷新的示例

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小时内与您取得联系。