这次给大家带来nodejs怎样调用微信分享功能,nodejs调用微信分享功能的注意事项有哪些,下面就是实战案例,一起来看一下。
一、接入微信jssdk
直接引用或者下载本地都行
二、js请求node后台签名、随机数、时间戳之类的
function getwxsignature() {
$.ajax({
url: /activitywxshaer,
type: 'post',
data: { urlhref:location.href },
success: function(jsons) {
var data = 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
}
});
}
三、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之类的不知道是不是我环境的问题,我不能用最后只能自己写了
/**
* 签名
* @param {*} url
*/
sign(url) {
let _this = this;
var ret = {
jsapi_ticket: configend.ticket,
noncestr: configend.noncestr,
timestamp: configend.timestamp,
url: url
};
var string = _this.rawstring(ret);
var shaobjs = sha1(string);
return shaobjs;
};
四、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</span>
* @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, 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() {
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,
noncestr: configend.noncestr,
timestamp: configend.timestamp,
url: url
};
var string = _this.rawstring(ret);
var shaobjs = sha1(string);
return shaobjs;
};
}
module.exports = wxshare;
就一普通的ajax请求nodejs后台,后台返回封装好的数据。
相信看了本文案例你已经掌握了方法,更多精彩请关注其它相关文章!
推荐阅读:
vuejs响应式原理具体解析
bootstrap4与vue2实现分页查询功能(附代码)
以上就是nodejs怎样调用微信分享功能的详细内容。