nodeJS微信分享

前端之家收集整理的这篇文章主要介绍了nodeJS微信分享前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

本文实例为大家分享了nodeJS微信分享的具体代码,供大家参考,具体内容如下

一、接入微信JSSDK

直接引用或者下载本地都行

二、JS请求node后台签名、随机数、时间戳之类的

调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。 appId: 'xxxxxxxxx',// 必填,公众号的唯一标识 timestamp: data.timestamp,// 必填,生成签名的时间戳 nonceStr: data.nonceStr,// 必填,生成签名的随机串 signature: data.signature,// 必填,签名,见附录1 jsApiList: [ 'onMenuShareTimeline','onMenuShareAppMessage','onMenuShareQQ','onMenuShareWeibo','onMenuShareQZone' ] // 必填,需要使用的JS接口列表,所有JS接口列表见附录2 }); shareFunc();// 微信的分享接口 里面为ready } }); }

三、nodeJS express 路由

分享 */ router.post('/activityWxShaer',function(req,res,next) { let hrefURL = req.body.urlhref; wxShare.prototype.accessToken(hrefURL,function(data) { res.json(data); }); });

四、nodeJS签名,微信重点签名,

我是采用sha1 ,我看了好多都是用sha-1,HEX之类的不知道是不是我环境的问题,我不能用最后只能自己写了

四、nodeJS后台代码直接上整体代码
[javascript] view plain copy
var url = require('url');
var request = require('request');
var sha1 = require('sha1');

let config = {
appID: "",// 微信公众号ID
appSecret: "" //微信公众号里有
},configEnd = {
appID: '',access_token: '',ticket: '',timestamp: '',// 必填,生成签名的时间戳
nonceStr: '',// 必填,生成签名的随机
signature: '',// 必填,签名,见附录1
};

/**

  • 微信分享
    */
    class wxShare {
    /**
    • 请求获取access_token 方法入口
    • @param {* URL链接} hrefURL
    • @param { 回调请求方法} callback
      /
      accessToken(hrefURL,callback) { // 获取access_token
      let _this = this;
      var tokenUrl = 'https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=' + config.appID + '&secret=' + config.appSecret;
      request(tokenUrl,function(error,response,body) {
      if (response.statusCode && response.statusCode === 200) {
      body = JSON.parse(body);
      configEnd.access_token = body.access_token;
      _this.upJsapiTicket(hrefURL,body.access_token,callback)
      }
      });
      };
      /**
    • 获取<span style="font-family:Arial;">Jsapi_Ticket
    • @param {* URL链接} hrefURL
    • @param {* token} access_Ttoken
    • @param { 回调请求方法} callback
      /
      upJsapiTicket(hrefURL,access_Ttoken,callback) { // Jsapi_ticket
      let _this = this;
      var ticketUrl = 'https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token=' + access_Ttoken + '&type=jsapi';
      request(ticketUrl,function(err,content) {
      content = JSON.parse(content);
      if (content.errcode == 0) {
      configEnd.ticket = content.ticket; // ticket
      configEnd.timestamp = _this.createTimestamp(); // 时间戳
      configEnd.nonceStr = _this.createNonceStr(); // 随机
      configEnd.signature = _this.sign(hrefURL); // 签名
      callback && callback(configEnd); // 回调前端JS方法
      }
      })
      };
      /**
    • 随机字符串
      */
      createNonceStr() {
      return Math.random().toString(36).substr(2,15);
      };
      /**
    • 时间戳
      */
      createTimestamp() {
      return parseInt(new Date().getTime() / 1000).toString();
      };
      /**
    • 拼接字符串
    • @param {} args
      /
      rawString(args) {
      var keys = Object.keys(args);
      keys = keys.sort()
      var newArgs = {};
      keys.forEach(function(key) {
      newArgs[key.toLowerCase()] = args[key];
      });
      var string = '';
      for (var k in newArgs) {
      string += '&' + k + '=' + newArgs[k];
      }
      string = string.substr(1);
      return string;
      };
      /**
    • 签名
    • @param {} url
      /
      sign(url) {
      let _this = this;
      var ret = {
      jsapi_ticket: configEnd.ticket,url: url
      };
      var string = _this.rawString(ret);
      var shaObjs = sha1(string);
      return shaObjs;
      };

}
module.exports = wxShare;

就一普通的ajax请求nodeJS后台后台返回封装好的数据。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程之家。

猜你在找的Node.js相关文章