vue單頁面應用引入並配置weixin-js-sdk

vue項目公衆號開發,需要使用到分享功能,根據文檔引入weixin-js-sdk,首次接觸,所以一開始就百度看了大量的貼吧,幾乎所有的文章都是說單頁面SPA應用需要在每次url變化的時候都得重新配置sdk,也就是wx.config();我不知道這是不是一個誤區,反正我按這個思路在APP.vue的watch裏面監聽$route,每一次路由變化時調用wx.config(),始終無法成功,返回錯誤提示invalid signature,簽名錯誤;在確認了簽名沒有錯的情況下,我只能想到是url的問題;
因爲我用的是vue-router 的hash模式,不存在其他文章說的ios和android下的兼容問題;url的獲取使用location.href.split("#")[0],但是一直沒有成功
實在沒辦法,只能先在項目中新建了一個demo頁面,在這個測試頁面中引入weixin-js-sdk,然後請求後端接口進行微信簽名,

success:res =>{
      console.log(res);
      //      debug: true, // 開啓調試模式,調用的所有api的返回值會在客戶端alert出來,若要查看傳入的參數,可以在pc端打開,參數信息會通過log打出,僅在pc端時纔會打印。
      //        appId: '', // 必填,公衆號的唯一標識
      //        timestamp: , // 必填,生成簽名的時間戳
      //      nonceStr: '', // 必填,生成簽名的隨機串
      //        signature: '',// 必填,簽名
      //        jsApiList: [] // 必填,需要使用的JS接口列表
      wx.config({
        debug : true, // 開啓調試模式,調用的所有api的返回值會在客戶端alert出來,若要查看傳入的參數,可以在pc端打開,參數信息會通過log打出,僅在pc端時纔會打印。
        appId : res.data.appId, // 必填,公衆號的唯一標識
        timestamp : res.data.timestamp, // 必填,生成簽名的時間戳
        nonceStr : res.data.nonceStr, // 必填,生成簽名的隨機串
        signature : res.data.signature,// 必填,簽名
        jsApiList : ["updateAppMessageShareData","onMenuShareAppMessage", "updateTimelineShareData"] // 必填,需要使用的JS接口列表
      });
   }

測試頁面的簽名沒有一點錯誤,然後把代碼複製到watch的$route監聽事件當中,結果還是不行,同樣的代碼實在想不明白爲什麼簽名通不過
沒辦法了,硬着頭皮把測試頁面的代碼直接丟到vue項目的index.html裏面,然後簽名成功了;試着在每個路由下面調用wx.ready()然後調用分享接口,測試也沒問題;
結論:**vue-router在hash模式下,weixin-js-sdk的簽名直接在index.html中執行一次後每一個路由頁面都可以生效;**至於網上說的每次url變化都重新配置config的說法,我不知道到底行不行的通,但是既然能一次搞定,我想還是沒有必要每次跳轉都去請求一次服務器

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章