前端小菜鳥,由於項目要對接微信的jssdk,對接就須要簽名認證,可是無奈安卓和IOS各有各的坑,本篇文章只討論簽名,和一個分享的坑,但願你們有所收穫,可以解決問題,若是解決不到,請麻煩在評論區留言,本文綜合了全部的回答,才調試出來坑
緣由:前端
1. 項目基於vue,在微信上的web應用 2. 要使用上傳功能(不一樣系統的兼容真的不少BUG,最後只能使用微信方案),支付功能,定位.... 3. 簽名一直存在bug和問題,那麼後面的功能都會喚不起(偶爾也能夠)
1. 流程詳細請看文檔,反正能力有限,沒看出什麼名堂,總結一句話,要使用先簽名 2. 開啓填坑之路,因爲微信使用會區分IOS和安卓系列,不一樣系列產生不同的問題 (公司項目初版的時候就給微信大坑過,因此本次重構的時候,就格外注意這一點)
router.afterEach((to, from) => { // 伸手黨福利 // window.__wxjs_is_wkwebview // true 時 爲 IOS 設備 // false時 爲 安卓 設備 if (window.__wxjs_is_wkwebview) { // IOS if (window.entryUrl == '' || window.entryUrl == undefined) { var url = `${FRONT_BASE}${to.fullPath}` window.entryUrl = url // 將後面的參數去除 } getWxAuth(to.fullPath,"ios") }else { // 安卓 setTimeout(function () { getWxAuth(to.fullPath,"android") }, 500); } })
看完路由模式了,就來進入邏輯部門,來看看如何處理
有同窗疑惑這個encodeURIComponent是幹嗎用的,其實具體很簡單,就是由於咱們在微信分享的時候,會自動給咱們帶上參數(記得告訴後端的夥伴要decodeURIComponent),切記只要帶參數就必定要轉碼!vue
對於IOS系統會自動增長以下參數: 朋友圈 from=timeline&isappinstalled=0 微信羣 from=groupmessage&isappinstalled=0 好友分享 from=singlemessage&isappinstalled=0 對於安卓系統會自動添加以下參數: 朋友圈 from=timeline 微信羣 from=groupmessage 好友分享 from=singlemessage
到了這一步就基本上是請求籤名成功,可是有同窗疑惑,那麼IOS每次分享的時候會不會是進去的第一個路由,個人回答是會的(須要稍加處理)