一、首先,看正常通用的
1、綁定域名
再公眾號開發設置里邊配置域名
2、引入js文件
index.html
<script src="https://res2.wx.qq.com/open/js/jweixin-1.6.0.js "></script>
3、通過后台處理調用接口得到簽名
這里通過添加路由守衛 判斷 ios系統時 保存第一次進入時的鏈接地址(iso分享失敗原因:因為ios獲取簽名傳參的url永遠是你進入這個項目的第一個url,不訪你可以點擊上角刷新試試)
beforeRouteEnter(to, from, next) { let userAgent = navigator.userAgent; if (userAgent.includes("iPhone") || userAgent.includes("iPad")) { sessionStorage.setItem("originUrl", location.href); // 用於ios分享 } next(); },
此處也有一個坑:
beforeRouteEnter:這個是組件內的守衛,看你寫在哪個頁面了,此處的重點是你得想辦法保存剛進入這個項目的第一個url
sendShare() { // this.reload(); this.common.tip("點擊右上角完成分享"); var timestamp = ""; var nonceStr = ""; var signature = ""; let urls = "";
// 這個判斷是處理ios分享失效的問題 let userAgent = navigator.userAgent; if (userAgent.includes("iPhone") || userAgent.includes("iPad")) { urls = sessionStorage.getItem("originUrl"); } else { urls = window.location.href; }
// 這兒的調接口方法是自己封裝的 this.http.getRequest(apis.getSignature_url, { urls: urls // 注意注意注意:這里的路徑必須是當前頁面路徑,並且必須和公眾號里邊配置的域名保持一致,否則會簽名失效(再ios中,這里的路徑必須是剛進入這個項目的第一個url,否則獲取簽名失效) }).then(res => { console.log(res, "res"); timestamp = res.timestamp; nonceStr = res.nonceStr; signature = res.signature;
通過config接口注入權限驗證配置
wx.config({ debug: false, // 開啟調試模式,調用的所有api的返回值會在客戶端alert出來,若要查看傳入的參數,可以在pc端打開,參數信息會通過log打出,僅在pc端時才會打印。 appId: "wxfbf80fe01e7999a8", // 必填,公眾號的唯一標識,填自己的! timestamp: timestamp, // 必填,生成簽名的時間戳,剛才接口拿到的數據 nonceStr: nonceStr, // 必填,生成簽名的隨機串 signature: signature, // 必填,簽名,見附錄1 jsApiList: ["updateAppMessageShareData", "onMenuShareTimeline"], // 權限導入 }); var url_link = apis.sharUrl + "/index?activityPlanId=" +this.activityPlanId + "&accountId=" + this.accountId;
通過ready接口處理成功驗證
wx.ready(() => { //需在用戶可能點擊分享按鈕前就先調用 // 分享給朋友 wx.updateAppMessageShareData({ title: this.data.title, // 分享標題 desc: this.data.introduce, // 分享描述 link: url_link, // 分享鏈接,該鏈接域名或路徑必須與當前頁面對應的公眾號JS安全域名一致 imgUrl: this.logo, // 分享圖標, 此圖標也要以http開頭的路徑 success: function() { // 設置成功 } });
通過error接口處理失敗驗證
wx.error(function(res) { // config信息驗證失敗會執行error函數,如簽名過期導致驗證失敗,具體錯誤信息可以打開config的debug模式查看,也可以在返回的res參數中查看,對於SPA可以在這里更新簽名。 }); }); // ================= }); },
參考:https://www.cnblogs.com/zishang91/p/10755488.html
https://blog.csdn.net/sinat_33184880/article/details/90240567