nodeJS微信分享
本文实例为大家分享了nodeJS微信分享的具体代码,供大家参考,具体内容如下
一、接入微信JSSDK
直接引用或者下载本地都行
二、JS请求node后台签名、随机数、时间戳之类的
functiongetWxSignature(){ $.ajax({ url:"/activityWxShaer", type:'post', data:{urlhref:location.href}, success:function(jsons){ vardata=JSON.parse(jsons); wx.config({ debug:false,//开启调试模式,调用的所有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 } }); }
三、nodeJSexpress路由
/** *分享 */ router.post('/activityWxShaer',function(req,res,next){ lethrefURL=req.body.urlhref; wxShare.prototype.accessToken(hrefURL,function(data){ res.json(data); }); });
四、nodeJS签名,微信重点签名,我是采用sha1,我看了好多都是用sha-1,HEX之类的不知道是不是我环境的问题,我不能用最后只能自己写了
/** *签名 *@param{*}url */ sign(url){ let_this=this; varret={ jsapi_ticket:configEnd.ticket, nonceStr:configEnd.nonceStr, timestamp:configEnd.timestamp, url:url }; varstring=_this.rawString(ret); varshaObjs=sha1(string); returnshaObjs; }; 四、nodeJS后台代码直接上整体代码 [javascript]viewplaincopy varurl=require('url'); varrequest=require('request'); varsha1=require('sha1'); letconfig={ appID:"",//微信公众号ID appSecret:""//微信公众号里有 }, configEnd={ appID:'', access_token:'', ticket:'', timestamp:'',//必填,生成签名的时间戳 nonceStr:'',//必填,生成签名的随机串 signature:'',//必填,签名,见附录1 }; /** *微信分享 */ classwxShare{ /** *请求获取access_token方法入口 *@param{*URL链接}hrefURL *@param{*回调请求方法}callback */ accessToken(hrefURL,callback){//获取access_token let_this=this; vartokenUrl='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) } }); }; /** *获取Jsapi_Ticket *@param{*URL链接}hrefURL *@param{*token}access_Ttoken *@param{*回调请求方法}callback */ upJsapiTicket(hrefURL,access_Ttoken,callback){//Jsapi_ticket let_this=this; varticketUrl='https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token='+access_Ttoken+'&type=jsapi'; request(ticketUrl,function(err,response,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(){ returnMath.random().toString(36).substr(2,15); }; /** *时间戳 */ createTimestamp(){ returnparseInt(newDate().getTime()/1000).toString(); }; /** *拼接字符串 *@param{*}args */ rawString(args){ varkeys=Object.keys(args); keys=keys.sort() varnewArgs={}; keys.forEach(function(key){ newArgs[key.toLowerCase()]=args[key]; }); varstring=''; for(varkinnewArgs){ string+='&'+k+'='+newArgs[k]; } string=string.substr(1); returnstring; }; /** *签名 *@param{*}url */ sign(url){ let_this=this; varret={ jsapi_ticket:configEnd.ticket, nonceStr:configEnd.nonceStr, timestamp:configEnd.timestamp, url:url }; varstring=_this.rawString(ret); varshaObjs=sha1(string); returnshaObjs; }; } module.exports=wxShare;
就一普通的ajax请求nodeJS后台,后台返回封装好的数据。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。