先上測試地址以示成功:html
用微信打開下面地址測試git
http://game.4gshu.com/deep-love/index.htmlgithub
獲直接掃二維碼君web
異步的方式好ajax
一、先後端分離啊後端
二、一個服務能夠供多個微信公衆賬號的數字簽名服務api
在服務器端用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 })
二、獲取微信簽名所需的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' ] });
三、在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); });
四、搞定
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