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的url截取模块url-extract的使用实例
Nov 18 NodeJs
Google官方支持的NodeJS访问API,提供后台登录授权
Jul 29 NodeJs
NodeJS制作爬虫全过程(续)
Dec 22 NodeJs
PHP和NodeJs开发的应用如何共用Session
Apr 16 NodeJs
NodeJs中的VM模块详解
May 06 NodeJs
nodejs使用express创建一个简单web应用
Mar 31 NodeJs
nodejs个人博客开发第七步 后台登陆
Apr 12 NodeJs
NodeJS、NPM安装配置步骤(windows版本) 以及环境变量详解
May 13 NodeJs
Nodejs实现文件上传的示例代码
Sep 26 NodeJs
nodejs更改项目端口号的方法
May 13 NodeJs
Nodejs + Websocket 指定发送及群聊的实现
Jan 09 NodeJs
分享五个Node.js开发的优秀实践 
Apr 07 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
虫族 Zerg 历史背景
2020/03/14 星际争霸
PHP树的代码,可以嵌套任意层
2006/10/09 PHP
php数组函数序列之rsort() - 对数组的元素值进行降序排序
2011/11/02 PHP
基于php的CMS中展示文章类实例分析
2015/06/18 PHP
PHP如何读取由JavaScript设置的Cookie
2017/03/22 PHP
PHP7下协程的实现方法详解
2017/12/17 PHP
使一个函数作为另外一个函数的参数来运行的javascript代码
2007/08/13 Javascript
谷歌浏览器 insertCell与appendChild的区别
2009/02/12 Javascript
Javascript 面向对象(二)封装代码
2012/05/23 Javascript
js简单实现根据身份证号码识别性别年龄生日
2013/11/29 Javascript
Javascript 高阶函数使用介绍
2015/06/15 Javascript
jQuery实现折叠、展开的菜单组效果代码
2015/09/16 Javascript
JS实现二叉查找树的建立以及一些遍历方法实现
2017/04/17 Javascript
bootstrap treeview 扩展addNode方法动态添加子节点的方法
2017/11/21 Javascript
Vue中的字符串模板的使用
2018/05/17 Javascript
Vue中使用vux配置代码详解
2018/09/16 Javascript
使用webpack4编译并压缩ES6代码的方法示例
2019/04/24 Javascript
你或许不知道的一些npm实用技巧
2019/07/04 Javascript
书单|人生苦短,你还不用python!
2017/12/29 Python
Python打印输出数组中全部元素
2018/03/13 Python
python Opencv将图片转为字符画
2021/02/19 Python
Python实现的txt文件去重功能示例
2018/07/07 Python
Python图像处理之直线和曲线的拟合与绘制【curve_fit()应用】
2018/12/26 Python
python 采用paramiko 远程执行命令及报错解决
2019/10/21 Python
python 协程中的迭代器,生成器原理及应用实例详解
2019/10/28 Python
python 实现从高分辨图像上抠取图像块
2020/01/02 Python
在django中查询获取数据,get, filter,all(),values()操作
2020/08/09 Python
很酷的小工具和电子产品商城:GearBest
2016/11/19 全球购物
Otel.com:折扣酒店预订
2017/08/24 全球购物
Wedgwood英国官方网站:英式精致骨瓷餐具、礼品与生活精品,源于1759年
2019/09/02 全球购物
俄罗斯在线服装店:STOLNIK
2021/03/07 全球购物
Booking.com缤客中国:全球酒店在线预订网站
2020/05/03 全球购物
最新结婚典礼主持词
2014/03/14 职场文书
《长相思》听课反思
2014/04/10 职场文书
婚前协议书标准版
2014/10/19 职场文书
同学联谊会邀请函
2019/06/24 职场文书