先上测试地址以示成功:
用微信打开下面地址测试
http://game.4gshu.com/deep-love/index.html
获直接扫二维码君
异步的方式好
1、前后端分离啊
2、一个服务可以供多个微信公众帐号的数字签名服务
在服务器端用NodeJS跑起一个数字签名生成服务,web端用ajax方式请求NodeJS服务获取数字签名信息
得到信息后配置微信JS-SDK
https.get('https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=你的appid写在这里&secret=你的secret写在这里', function(_res) { // 这个异步回调里可以获取access_token })
2、获取微信签名所需的ticket
https.get('https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token=上一步中获取的access_token&type=jsapi', function(_res){ // 这个异步回调里可以获取ticket });
// noncestr var createNonceStr = function() { return Math.random().toString(36).substr(2, 15); }; // timestamp var createTimeStamp = function () { return parseInt(new Date().getTime() / 1000) + ''; };
也可以参考我代码中的代码
// 计算签名方法 var calcSignature = function (ticket, noncestr, ts, url) { var str = 'jsapi_ticket=' + ticket + '&noncestr=' + noncestr + '×tamp='+ ts +'&url=' + url; shaObj = new jsSHA(str, 'TEXT'); return shaObj.getHash('SHA-1', 'HEX'); } var signature = calcSignature(ticket, noncestr, timestamp, url);
wx.config({ debug: true, appId: appid, timestamp: timestamp, nonceStr: nonceStr, signature: signature, jsApiList: [ 'checkJsApi', 'onMenuShareTimeline', 'onMenuShareAppMessage', 'onMenuShareQQ', 'onMenuShareWeibo', 'hideMenuItems', 'chooseImage' ] });
3、在wx.ready内调用API
wx.ready(function(){ var sdata = { title: '那年|时光遗忘了,文字却清晰地复刻着', desc: '那年|时光遗忘了,文字却清晰地复刻着', link: 'http://game.4gshu.com/deep-love/index2.html', imgUrl: 'http://game.4gshu.com/xuangedan/other-project/2015-01-06/img/share-wx-logo.jpg', success: function () { alert('用户确认分享后执行的回调函数'); }, cancel: function () { alert('用户取消分享后执行的回调函数'); } }; wx.onMenuShareTimeline(sdata); wx.onMenuShareAppMessage(sdata); });
4、搞定
var cachedSignatures = { 'http://game.4gshu.com/': { appid: ’微信认证帐号的的appid' ,secret: '微信认证帐号的secret' ,timestamp: '1421135250' ,noncestr: 'ihj9ezfxf26jq0k' } }
我的项目源码已经放到Github上了,有需要的可以pull下来看一看,
NodeJS我也是一知半解,将就着用,多有不足之处,欢迎交流
源码地址:https://github.com/willian12345/wechat-JS-SDK-demo