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