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中Buffer模块详解
Jan 07 NodeJs
Nodejs的express使用教程
Nov 23 NodeJs
nodejs中模块定义实例详解
Mar 18 NodeJs
NodeJS处理Express中异步错误
Mar 26 NodeJs
详解nodejs微信公众号开发——4.自动回复各种消息
Apr 11 NodeJs
nodejs个人博客开发第五步 分配数据
Apr 12 NodeJs
nodejs处理图片的中间件node-images详解
May 08 NodeJs
NodeJS创建最简单的HTTP服务器
May 15 NodeJs
深入理解nodejs中Express的中间件
May 19 NodeJs
nodejs利用ajax实现网页无刷新上传图片实例代码
Jun 06 NodeJs
浅谈nodejs中的类定义和继承的套路
Jul 26 NodeJs
浅谈使用nodejs搭建web服务器的过程
Jul 20 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
第1次亲密接触PHP5(2)
2006/10/09 PHP
php5中类的学习
2008/03/28 PHP
一个PHP缓存类代码(附详细说明)
2011/06/09 PHP
php数组中删除元素的实现代码
2012/06/22 PHP
codeigniter上传图片不能正确识别图片类型问题解决方法
2014/07/25 PHP
php微信公众开发之获取周边酒店信息的方法
2014/12/22 PHP
php新浪微博登录接口用法实例
2014/12/23 PHP
php编程中echo用逗号和用点号连接的区别
2016/03/26 PHP
php版微信公众号自定义分享内容实现方法
2016/09/22 PHP
FireFox与IE 下js兼容触发click事件的代码
2008/11/20 Javascript
jQuery ui autocomplete选择列表被Bootstrap模态窗遮挡的完美解决方法
2016/09/23 Javascript
深入理解JS中的Function.prototype.bind()方法
2016/10/11 Javascript
js仿微博动态栏功能
2017/02/22 Javascript
JavaScript中的普通函数和箭头函数的区别和用法详解
2017/03/21 Javascript
Ionic2调用本地SQlite实例
2017/04/22 Javascript
Vue2.X 通过AJAX动态更新数据
2018/07/17 Javascript
vue-cli V3.0版本的使用详解
2018/10/24 Javascript
Vue 解决父组件跳转子路由后当前导航active样式消失问题
2020/07/21 Javascript
[02:32]DOTA2亚洲邀请赛 VG战队巡礼
2015/02/03 DOTA
python数据结构树和二叉树简介
2014/04/29 Python
跟老齐学Python之有点简约的元组
2014/09/24 Python
Python中函数的参数定义和可变参数用法实例分析
2015/06/04 Python
在windows系统中实现python3安装lxml
2016/03/23 Python
Python常用字符串替换函数strip、replace及sub用法示例
2018/05/21 Python
python保存文件方法小结
2018/07/27 Python
对Python中for复合语句的使用示例讲解
2018/11/01 Python
美国著名首饰网站:BaubleBar
2016/08/29 全球购物
英语专业毕业个人求职自荐信
2013/09/21 职场文书
保洁主管岗位职责
2013/11/20 职场文书
高一学生评语大全
2014/04/25 职场文书
教师听课评语大全
2014/12/31 职场文书
职代会闭幕词
2015/01/28 职场文书
婚宴父母致辞
2015/07/27 职场文书
幼儿园小班班务总结
2015/08/03 职场文书
CSS3新特性详解(五):多列columns column-count和flex布局
2021/04/30 HTML / CSS
Java的Object类的九种方法
2022/04/13 Java/Android