摘要:配置先上配置每個(gè)頁(yè)面都調(diào)用微信授權(quán)配置注是我在暴露的接口這份配置主要是根據(jù)微信公眾號(hào)開發(fā)踩坑記錄配置而來。
首先說明,應(yīng)用環(huán)境是使用的是vue+vue-router,history模式開發(fā)的單頁(yè)應(yīng)用。
配置先上配置???
// index.js const protocol = location.protocol + "http://" + location.host; router.afterEach((to, from) => { if(!store.state.weChatUrl) { store.commit("m_weChatUrl", document.URL); } let url = protocol + to.fullPath.split("#")[0]; store.dispatch("a_wxConfig", url);// 每個(gè)頁(yè)面都調(diào)用微信授權(quán)配置 }); // action.js if(window.__wxjs_is_wkwebview === true) { urlType = 0; } else { urlType = 1; } $get(...).then(item => { config = JSON.parse(item); $wechat.config(config); $wechat.ready(function () {}) }) // 注:$wechat是我在webpack external暴露的wx接口
這份配置主要是根據(jù)vue微信公眾號(hào)開發(fā)踩坑記錄(2)配置而來。
遇到的問題:上傳圖片、分享朋友自定義內(nèi)容在ios上面可以,安卓不可以
有些很有趣的現(xiàn)象:
ios的可以,有些安卓可以,有些安卓不行
在安卓上面有些頁(yè)面的上傳圖片可以,有些頁(yè)面的上傳圖片不可以
在本地用測(cè)試公眾號(hào)可以,用正式公眾號(hào)大部分時(shí)間不行
不行的時(shí)候,微信debug模式的結(jié)果基本都是:config ok,CheckJsApi: permission Denied
正是這些現(xiàn)象把我?guī)税雮€(gè)地球,好不容易才試出來問題的所在。
秀一波我曾經(jīng)懷疑過的問題:
jssdk cdn加載可能不成功(用本地版測(cè)試過)
是不是寫死cdn 的協(xié)議頭http導(dǎo)致的(使用location.protocol測(cè)試過)
是不是簽名路徑的問題,難道低版本的安卓跟ios一樣也是要用第一次進(jìn)去頁(yè)面的url的呢
安卓在本地測(cè)試可以,在線上又不行了。會(huì)不會(huì)是由于后端寫了所有的jsApiList,但是線上正式賬號(hào)并不是所有的都具有這個(gè)權(quán)限的。(排除了)
是不是因?yàn)锳PI沒有在wx.ready 回調(diào)里面執(zhí)行。但是官方說過像上傳接口API那樣的明確不需要啊
懷疑過這些問題的可以不用懷疑了,經(jīng)過我的百般折騰,終于在這篇博客???關(guān)于html5-History模式在微信瀏覽器內(nèi)的問題 發(fā)現(xiàn)了一點(diǎn)曙光:
修改后的代碼如下
setTimeout(function () { $wechat.config(config); }, 500);
簡(jiǎn)直不要太高興,居然可以啦?。。?!
其實(shí)細(xì)想一下config ok卻會(huì)發(fā)生permission Denied已經(jīng)給出了問題所在了,但是奇怪的現(xiàn)象太多了,想法就饒了半個(gè)地球了。
讓我來解析一下為什么config ok卻會(huì)發(fā)生permission Denied的報(bào)錯(cuò)。
由于在afterEach調(diào)用config的時(shí)候,頁(yè)面的路由還是上一個(gè)頁(yè)面的路由,config的url也是上一個(gè)頁(yè)面的路由,所以config是ok的。但是到調(diào)用API的時(shí)候,afterEach多數(shù)已經(jīng)resolve了,所以頁(yè)面的路由也已經(jīng)改變了,也就是當(dāng)前調(diào)用api的路由跟config的路由不一致,所以微信就判斷permission Denied了
用了上面延遲后的config之后,ios分享的每個(gè)頁(yè)面進(jìn)去的都是首頁(yè)。這是要折騰死我的節(jié)奏啊?????。幸好我只改了這延遲這一個(gè)地方,所以我很容易地就確定,肯定是afterEach在ios跟Android的處理是不一樣的,所以把ios改回原來不延遲的config就妥妥滴好了
if (window.__wxjs_is_wkwebview === true) { $wechat.config(config); } else { setTimeout(function () { $wechat.config(config); }, 500); }在一個(gè)頁(yè)面定義了分享,之后每個(gè)頁(yè)面的分享內(nèi)容都是一樣的了
由于是單頁(yè)應(yīng)用,頁(yè)面不會(huì)刷新,所以微信分享一旦定義了,wx變量就會(huì)一直存在于系統(tǒng)運(yùn)行內(nèi)存中,自然就是每個(gè)頁(yè)面分享的內(nèi)容就是定義過的就不奇怪了。
解決辦法,在afterEach里面,定義每個(gè)路由默認(rèn)的分享標(biāo)題和描述,如果組件需要再在獨(dú)立的vue組件里面重新定義一篇分享的API即可
$wechat.onMenuShareTimeline({ title: state.title, // 分享標(biāo)題 success: function () { // 用戶確認(rèn)分享后執(zhí)行的回調(diào)函數(shù) } }); $wechat.onMenuShareAppMessage({ title: state.title, // 分享標(biāo)題 type: "", // 分享類型,music、video或link,不填默認(rèn)為link dataUrl: "", // 如果type是music或video,則要提供數(shù)據(jù)鏈接,默認(rèn)為空 success: function () { // 用戶確認(rèn)分享后執(zhí)行的回調(diào)函數(shù) }, cancel: function () { // 用戶取消分享后執(zhí)行的回調(diào)函數(shù) } });
參考文檔:
vue微信公眾號(hào)開發(fā)踩坑記錄(2)
關(guān)于html5-History模式在微信瀏覽器內(nèi)的問題
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/93594.html
摘要:主要是用,每當(dāng)用戶第一次進(jìn)來時(shí),去獲取一次簽名驗(yàn)證。注意只獲取一次,這樣簽名就解決了。 vue+微信支付目錄+JSSDK簽名解決方案 遇坑如下 注意:此方法僅為個(gè)人總結(jié),并非唯一解決方案 微信JSSDK簽名出錯(cuò) 微信支付 調(diào)起支付缺少API參數(shù) 微信支付目錄配置,只有5個(gè)配置,可能超過5個(gè)地方有配置,路由規(guī)劃 微信授權(quán)回調(diào)處理 我所使用的技術(shù) vue路由模式 history 模...
摘要:具體請(qǐng)看我在提問里的回答下載七牛云文件間歇性失敗總結(jié)至此,在微信開發(fā)中關(guān)于錄音這一塊兒的功能,就已經(jīng)介紹完畢。 showImg(https://segmentfault.com/img/remote/1460000013595733?w=454&h=339); 原文是在我自己博客中,小伙伴也可以點(diǎn)閱讀原文進(jìn)行跳轉(zhuǎn)查看,還有好聽的背景音樂噢~ ????一年的時(shí)間里,前前后后都在搞微信開發(fā)...
摘要:微信分享簽名錯(cuò)誤單頁(yè)應(yīng)用模式下微信分享一直提示簽名錯(cuò)誤按照微信官網(wǎng)文檔,已經(jīng)引入,正確的配置安全域名,后臺(tái)開發(fā)人員生成的簽名也通過微信簽名工具驗(yàn)證,但是前端的自定義分享一直報(bào)簽名錯(cuò)誤,沒有辦法自定義分享,如果確保了哪些基本配置沒有問題,并且 微信分享簽名錯(cuò)誤invalid signature vue單頁(yè)應(yīng)用history模式下微信分享一直提示簽名錯(cuò)誤invalid signature ...
閱讀 925·2021-10-18 13:32
閱讀 3527·2021-09-30 09:47
閱讀 2168·2021-09-23 11:21
閱讀 1893·2021-09-09 09:34
閱讀 3493·2019-08-30 15:43
閱讀 1533·2019-08-30 11:07
閱讀 1072·2019-08-29 16:14
閱讀 737·2019-08-29 11:06