nodejs获取微信小程序带参数二维码实现代码


Posted in NodeJs onApril 12, 2017

nodejs获取微信小程序带参数二维码实现代码

由于项目需求,需要获取小程序页面的带有参数的二维码。好,那就看文档搞吧。

之前都是写前端,没有写过后台的东西,这次难得有机会组长让我试一试试用node来写,那就写吧。

1、首页获取token,发送request请求,用get的方式,在url后面加上小程序的grant_type,appid,secret,就顺利拿到token了,注意,这个token是有有效时间的,小程序的是7200秒,也就是2个小时,每天获取的次数有限,需要有个中控服务器定时获取token,由于我的业务量小,就没有对token进行保存了,每次都是重新获取。

2、获取完token之后,再发送请求获取二维码,坑的是,微信没有告诉我们获取的是二进制流,之前一直是写前端的代码,对流没有概念,百度之,谷歌之,折腾了两天,终于搞定。还遇到了express的坑,用原来express的代码,死活生成不了二维码,新建一个express再生成二维码就没问题,莫名其妙的坑。

上代码:

var fs = require('fs'); 
var request = require('request'); 
var wx_conf = require('../../conf/wx_conf');//这里放了微信appid跟appSecret,文件没有引入进来,要用的时候,改一下吧。 
var AccessToken = { 
 grant_type: 'client_credential', 
 appid: wx_conf.appId, 
 secret: wx_conf.appSecret 
} 
var wx_gettoken_url = 'https://api.weixin.qq.com/cgi-bin/token?grant_type=' + AccessToken.grant_type + '&appid=' + AccessToken.appid + '&secret=' + AccessToken.secret; 
//请求二维码的参数 
var postData = { 
 path: "pages/index/index", 
 width: 430 
} 
var createQrcode = { 
 create: function() { 
  console.log('fn:create'); 
  this.getToken(); 
 }, 
 //获取微信的token 
 getToken: function() { 
  console.log('fn:getToken'); 
  var that = this; 
  new Promise((resolve, reject) => { 
   console.log('进入Promise方法了'); 
   request({ 
    method: 'GET', 
    url: wx_gettoken_url 
   }, function(err, res, body) { 
    if (res) { 
     resolve({ 
      isSuccess: true, 
      data: JSON.parse(body) 
     }); 
    } else { 
     console.log (err); 
     reject({ 
      isSuccess: false, 
      data: err 
     }); 
    } 
   }) 
  }).then(proData => { 
   that.getQrcode(proData); 
  }); 
 }, 
 //生成二维码 
 getQrcode: function(proData) { 
  console.log ('fn:getQrcode'); 
  if (proData.isSuccess) { 
   postData = JSON.stringify(postData); 
   request({ 
    method: 'POST', 
    url: 'https://api.weixin.qq.com/cgi-bin/wxaapp/createwxaqrcode?access_token=' + proData.data.access_token, 
    body: postData 
   }).pipe(fs.createWriteStream('./public/images/index.png'));//路径自己定义吧 
  } else { 
   console.log('Promise请求数据出错'); 
  } 
 } 
} 
module.exports = createQrcode;//暴露对象,调用create方法既可以创建二维码

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

NodeJs 相关文章推荐
NodeJS中的MongoDB快速入门详细教程
Nov 11 NodeJs
NodeJS学习笔记之Module的简介
Mar 24 NodeJs
深入理解Nodejs Global 模块
Jun 03 NodeJs
nodejs mysql 实现分页的方法
Jun 06 NodeJs
NodeJS实现图片上传代码(Express)
Jun 30 NodeJs
nodejs接入阿里大鱼短信验证码的方法
Jul 10 NodeJs
详解nodejs中express搭建权限管理系统
Sep 15 NodeJs
nodejs实现截取上传视频中一帧作为预览图片
Dec 10 NodeJs
Nodejs 和 Electron ubuntu下快速安装过程
May 04 NodeJs
nodejs 使用 js 模块的方法实例详解
Dec 04 NodeJs
详解nodejs解压版安装和配置(带有搭建前端项目脚手架)
Dec 06 NodeJs
详解nodejs微信公众号开发——5.素材管理接口
Apr 11 #NodeJs
详解nodejs微信公众号开发——4.自动回复各种消息
Apr 11 #NodeJs
nodejs连接mysql数据库简单封装示例-mysql模块
Apr 10 #NodeJs
详解nodejs操作mongodb数据库封装DB类
Apr 10 #NodeJs
详解nodejs微信公众号开发——3.封装消息响应模块
Apr 10 #NodeJs
详解nodejs微信公众号开发——2.自动回复
Apr 10 #NodeJs
详解nodejs微信公众号开发——1.接入微信公众号
Apr 10 #NodeJs
You might like
晶体管单管来复再生式收音机
2021/03/02 无线电
phpBB BBcode处理的漏洞
2006/10/09 PHP
PHP MYSQL乱码问题,使用SET NAMES utf8校正
2009/11/30 PHP
通俗易懂的php防注入代码
2010/04/07 PHP
destoon调用discuz论坛中带图片帖子的实现方法
2014/08/21 PHP
php将图片文件转换成二进制输出的方法
2015/06/10 PHP
PHP会话控制实例分析
2016/12/24 PHP
php实现的二叉树遍历算法示例
2017/06/15 PHP
php中请求url的五种方法总结
2017/07/13 PHP
PHP 实现页面静态化的几种方法
2017/07/23 PHP
js用图作提交按钮或超连接
2008/03/26 Javascript
javascript 对象比较实现代码
2009/04/27 Javascript
取得窗口大小 兼容所有浏览器的js代码
2011/08/09 Javascript
ASP.NET jQuery 实例8 (动态添加内容到DropDownList)
2012/02/03 Javascript
火狐下table中创建form导致两个table之间出现空白
2013/09/02 Javascript
js关于精确计算和数值格式化以及直接引js文件
2014/01/28 Javascript
javascript异步处理工作机制详解
2015/04/13 Javascript
详解maxlength属性在textarea里奇怪的表现
2015/12/27 Javascript
jquery.validate使用详解
2016/06/02 Javascript
微信小程序 简单教程实例详解
2017/01/13 Javascript
jQuery EasyUI Panel面板组件使用详解
2017/02/28 Javascript
Three.js中网格对象MESH的属性与方法详解
2017/09/27 Javascript
常用的9个JavaScript图表库详解
2017/12/19 Javascript
Vue封装Swiper实现图片轮播效果
2018/02/06 Javascript
vuex如何重置所有state(可定制)
2019/01/17 Javascript
微信小程序代码上传、审核发布小程序
2019/05/18 Javascript
JS函数动态传递参数的方法分析【基于arguments对象】
2019/06/05 Javascript
Python错误处理操作示例
2018/07/18 Python
python实现通过flask和前端进行数据收发
2019/08/22 Python
解决Tensorflow占用GPU显存问题
2020/02/03 Python
详解HTML5通讯录获取指定多个人的信息
2016/12/20 HTML / CSS
索尼巴西商店:Sony巴西
2019/06/21 全球购物
语文教学感言
2014/02/06 职场文书
升学宴演讲稿
2014/09/01 职场文书
2014年学校办公室工作总结
2014/12/19 职场文书
2015年节能降耗工作总结
2015/05/22 职场文书