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中启用ECMAScript 6小结(windos以及Linux)
Jul 15 NodeJs
轻松创建nodejs服务器(7):阻塞操作的实现
Dec 18 NodeJs
Nodejs学习item【入门手上】
May 05 NodeJs
详解nodejs与javascript中的aes加密
May 22 NodeJs
NodeJS遍历文件生产文件列表功能示例
Jan 22 NodeJs
Nodejs进阶:express+session实现简易登录身份认证
Apr 24 NodeJs
NodeJS链接MySql数据库的操作方法
Jun 27 NodeJs
详解HTTPS 的原理和 NodeJS 的实现
Jul 04 NodeJs
NodeJS 中Stream 的基本使用
Jul 30 NodeJs
nodejs 生成和导出 word的实例代码
Jul 31 NodeJs
nodejs基础之多进程实例详解
Dec 27 NodeJs
nodejs 递归拷贝、读取目录下所有文件和目录
Jul 18 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
php curl post 时出现的问题解决
2014/01/30 PHP
ThinkPHP打开验证码页面显示乱码的解决方法
2014/12/18 PHP
php判断linux下程序问题实例
2015/07/09 PHP
表格 隔行换色升级版
2009/11/07 Javascript
jQuery.extend()的实现方式详解及实例
2013/06/29 Javascript
jQuery简单实现网页选项卡特效
2014/11/24 Javascript
javascript感应鼠标图片透明度显示的方法
2015/02/24 Javascript
JQuery+Ajax实现数据查询、排序和分页功能
2015/09/27 Javascript
Google 地图API资料整理及详细介绍
2016/08/06 Javascript
js注入 黑客之路必备!
2016/09/14 Javascript
nodejs实现OAuth2.0授权服务认证
2017/12/27 NodeJs
详解Vue 事件修饰符capture 的使用
2017/12/29 Javascript
微信小程序实现简单评论功能
2018/11/28 Javascript
zepto.js 实时监听输入框的方法
2018/12/04 Javascript
JS实现旋转木马轮播图
2020/01/01 Javascript
Vue实现导航栏菜单
2020/08/19 Javascript
JS获取一个字符串中指定字符串第n次出现的位置
2021/02/10 Javascript
python 简单备份文件脚本v1.0的实例
2017/11/06 Python
详解如何从TensorFlow的mnist数据集导出手写体数字图片
2019/08/05 Python
为什么黑客都用python(123个黑客必备的Python工具)
2020/01/31 Python
Jupyter notebook无法导入第三方模块的解决方式
2020/04/15 Python
keras CNN卷积核可视化,热度图教程
2020/06/22 Python
DJI美国:消费类无人机领域的领导者
2018/04/27 全球购物
FLOS美国官网:意大利高级照明工艺的传奇
2018/08/07 全球购物
园长自我鉴定
2013/10/06 职场文书
应用电子专业学生的自我评价
2013/10/16 职场文书
绿色环保家庭事迹材料
2014/08/31 职场文书
财务工作疏忽检讨书
2014/09/11 职场文书
四风对照检查材料范文
2014/09/27 职场文书
2014年幼儿园小班工作总结
2014/12/04 职场文书
涨价通知怎么写
2015/04/23 职场文书
2015年招商引资工作总结
2015/04/25 职场文书
千与千寻观后感
2015/06/04 职场文书
网络营销实训总结
2015/08/03 职场文书
python获取字符串中的email
2022/03/31 Python
Ubuntu安装Mysql+启用远程连接的完整过程
2022/06/21 Servers