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