摘要:處理自己的邏輯四重點來了,解決微信無效的問題使用的網友都知道,路由上帶有做路由的跳轉,而在發過去做微信驗證的的時候,會被干掉,最終導致簽名無效。
一,先登陸微信公眾號后臺綁定js安全域名,不需要加http或https,詳情百度。 二、信公眾號后臺設置服務器的IP為白名單,否則無法獲取access_token,詳情百度 三、引入wx-js-sdk
1.使用script標簽 http://res.wx.qq.com/open/js/...(支持https)引入;
2.如果使用vue-cli腳手架工具,可以先npm install weixin-js-sdk -s 加載依賴包
以下已腳手架為例
.vue 文件中 import wx from "weixin-js-sdk";
getConfig(){ let that = this; this.$axios({ url:that.api.shareUrl,//換成你實際請求的路徑 method:"post", data:{ url:window.location.href //獲取當前路徑,注意路徑一般不能寫死,請求簽名的路徑和最終調取wx-sdk路徑必須一致。 } }).then(function (res) { let sign = res.data.data;//后端返回的微信的數據 wx.config({ debug: true, // 開啟調試模式,調用的所有api的返回值會在客戶端alert出來,若要查看傳入的參數,可以在pc端打開,參數信息會通過log打出,僅在pc端時才會打印。 appId: sign.appId, // 必填,公眾號的唯一標識 timestamp: sign.timestamp, // 必填,生成簽名的時間戳 nonceStr: sign.nonceStr, // 必填,生成簽名的隨機串 signature: sign.signature, // 必填,簽名,見附錄1 jsApiList: [ "onMenuShareTimeline", "onMenuShareAppMessage", "hideMenuItems", "showMenuItems", "showAllNonBaseMenuItem", "hideAllNonBaseMenuItem", "startRecord", "stopRecord", "onVoiceRecordEnd", "uploadVoice", "downloadVoice", "playVoice", "onVoicePlayEnd", "pauseVoice", "stopVoice", "openLocation", "getLocation", "chooseWXPay", "onMenuShareQQ", "scanQRCode", ], // 必填,需要使用的JS接口列表,所有JS接口列表見附錄2 }); }).catch(function (err) { }) }; 初始化完成,以調起微信掃一掃為例 scan(){ let that =this; wx.ready(function() { wx.scanQRCode({ needResult : 1, // 默認為0,掃描結果由微信處理,1則直接返回掃描結果 success : function(res) { var data = res.resultStr; // 當needResult 為 1 時,掃碼返回的結果 var result =data.split(",")[1];//返回的結果是碼的類型+‘,’+內容,所以要以數組分割取第二個。 //處理自己的邏輯 } }); }) }四、重點來了,解決微信signature無效的問題
使用vue-router的網友都知道,路由上帶有#做路由的跳轉,而#在發過去做微信驗證的signature的時候,#會被干掉,最終導致簽名無效。例如你的路徑是 www.a.com/#/scan 拿去簽名,#被干掉以后,你使用www.a.com/#/scan,做wx.config signature是無效的。很多人都知道要使用vue的history模式。
// 路由配置
const RouterConfig = { mode: "history", routes: routers };
例如你的域名是www.a.com,你的文件部署在根目錄下,首頁正常訪問,使用頁面內部調整路由,如菜單等,沒問題。但是一旦你直接訪問www.a.com/scan,或者從首頁菜單跳轉到www.a.com/sacn然后刷新本頁,你會發現返回404。
以下以nginx為例分析這個問題,你訪問www.a.com,nginx請求到根目錄下index.html,沒問題,頁面上使用菜單做跳轉頁沒問題,但是一旦你直接訪問www.a.com/scan,或者刷新www.a.com/scan,nginx找不到scan這個文件夾,所以返回404
so,配置 mode: "history",還需要nginx配置配合。訪問不到文件夾的時候,
location / { if (!-e $request_filename){ rewrite ^/(.*) /index.html last; } }
直接回到你的index.html并把參數帶回來。解決所有問題
如果你的項目不是部署在根目錄怎么辦?
假如你的項目部署的目錄是 /test/
vue router 的配置為
const RouterConfig = { mode: "history", base:"test", routes: routers };
nginx的配置為
location /test/ { if (!-e $request_filename){ rewrite ^/(.*) /test/index.html last; } }
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/96568.html
摘要:處理自己的邏輯四重點來了,解決微信無效的問題使用的網友都知道,路由上帶有做路由的跳轉,而在發過去做微信驗證的的時候,會被干掉,最終導致簽名無效。 一,先登陸微信公眾號后臺綁定js安全域名,不需要加http或https,詳情百度。 二、信公眾號后臺設置服務器的IP為白名單,否則無法獲取access_token,詳情百度 三、引入wx-js-sdk 1.使用script標簽 http://...
摘要:處理自己的邏輯四重點來了,解決微信無效的問題使用的網友都知道,路由上帶有做路由的跳轉,而在發過去做微信驗證的的時候,會被干掉,最終導致簽名無效。 一,先登陸微信公眾號后臺綁定js安全域名,不需要加http或https,詳情百度。 二、信公眾號后臺設置服務器的IP為白名單,否則無法獲取access_token,詳情百度 三、引入wx-js-sdk 1.使用script標簽 http://...
摘要:進過下面的步驟,一步一步的配置,就可以讓你正確的在項目中引入微信的。在進行了正確的微信文件引入后看上面在頁面中調用如下代碼就可以注入權限驗證配置。可以通過微信提供的兩個接口來進行事件回調。到這為止,微信的接入就完成了。 微信JS-SDK的功能 如果你點進來,那么我相信你應該知道微信的JS-SDK可以用來做什么了。微信的官方文檔描述如下。 微信JS-SDK是微信公眾平臺面向網頁開發者提供...
摘要:零售商家通過微信支付小程序實現線上線下消費一體化,通過線上支付線下單品完成商品數據的打通。因此小程序搭載智慧零售,能助力商家實現消費場景數字化以及購買行為具象化,從新的維度提高用戶服務水平。 隨著移動互聯網、大數據、AI等技術日益成熟,實體行業領域的轉型成為業績提升的關鍵。對于零售行業從業者,這意味著思維方式的自我進化,對于消費者,則意味著與產品產生新的連接,享受更加個性化、更具人情味...
閱讀 2263·2021-09-30 09:48
閱讀 3634·2021-09-24 10:27
閱讀 1791·2021-09-22 15:32
閱讀 2026·2021-08-09 13:44
閱讀 3575·2019-08-30 15:55
閱讀 1045·2019-08-29 17:12
閱讀 2000·2019-08-29 17:05
閱讀 2918·2019-08-29 13:43