VUE專案微信分享
一、引入sdk
npm install --save-dev weixin-js-sdk
二、外部js wetchat.js
import { weixinGetSign } from '@/api/index'; //weixinGetSign 為後臺介面名
import wx from 'weixin-js-sdk'; // 引入wxJS
const wxApi = {
/**
* [wxRegister 微信Api初始化]
* @param {Function} callback [ready回撥函式]
*/
wxRegister(sys) {
let url = {
url: window.location.href
};
// var title = '';
if (sys == 'ios') {
url = window.entryUrl;
}
weixinGetSign(url).then(res => {
wx.config({
//在測試的時候一定要開啟這個 debug: true 只要有報錯就一定會彈出來,
debug: false, // 開啟除錯模式
appId: res.body.data.appId, // 必填,公眾號的唯一標識
timestamp: res.body.data.timestamp, // 必填,生成簽名的時間戳
nonceStr: res.body.data.noncestr, // 必填,生成簽名的隨機串
signature: res.body.data.signature, // 必填,簽名,見附錄1
ticket: res.body.data.ticket, // 獲取微信授權頁
url: res.body.data.url,
jsApiList: [
'checkJsApi', //必填,檢測api是否有許可權
//自定義“分享給朋友”及“分享到QQ”按鈕的分享內容
'onMenuShareTimeline',
'onMenuShareAppMessage',
'onMenuShareQQ',
'onMenuShareQZone',
'onMenuShareWeibo'
] // 必填,需要使用的JS介面列表,所有JS介面列表見附錄2
});
}),
wx.ready(() => {
//一定要保證分享的url和傳遞給後端url是一致的,如果路由發生了變化一定要獲取當前的路由
let links = window.location.href;
let shareTitle = sessionStorage.getItem('title');
let shareIcon = sessionStorage.getItem('icon');
let shareDesc = sessionStorage.getItem('desc');
let shareTitleSub = shareTitle.substring(1, shareTitle.length - 1); //去掉雙引號
let shareIconSub = shareIcon.substring(1, shareIcon.length - 1); //去掉雙引號
let shareDescSub = shareDesc.substring(1, shareDesc.length - 1); //去掉雙引號
注:因為後臺沒有返回相關資料,所以把資料存在了本地獲取
let optionApp = {
title: shareTitleSub, // 分享標題, 請自行替換
desc: shareDescSub,//分享內容
link: links //分享連結
imgUrl: shareIconSub // 分享圖示, 請自行替換,需要絕對路徑
};
let optionTimeline = {
title: shareTitleSub, // 分享標題, 請自行替換
link: links, // 分享連結,根據自身專案決定是否需要split
imgUrl: shareIconSub, // 分享圖示, 請自行替換,需要絕對路徑
desc: shareDescSub //分享內容
};
// 微信分享給朋友
wx.onMenuShareTimeline({
title: optionApp.title, // 分享標題
link: optionApp.link, // 分享連結
imgUrl: optionApp.imgUrl, // 分享圖示
desc: optionApp.desc, // 分享圖示
success() {},
cancel() {
// 使用者取消分享後執行的回撥函式
},
fail() {
// alert("分享失敗!"+JSON.stringify(s));
}
}),
// 微信分享到朋友圈
wx.onMenuShareAppMessage({
title: optionTimeline.title, // 分享標題
link: optionTimeline.link, // 分享連結
imgUrl: optionTimeline.imgUrl, // 分享圖示
desc: optionTimeline.desc, //分享內容
success() {
// 使用者成功分享後執行的回撥函式
},
cancel() {
// 使用者取消分享後執行的回撥函式
},
fail() {
// alert(JSON.stringify(msg));
}
});
// 微信分享給QQ
wx.onMenuShareQQ({
title: optionApp.title, // 分享標題
link: optionApp.link, // 分享連結
imgUrl: optionApp.imgUrl, // 分享圖示
desc: optionApp.desc, // 分享內容
success() {},
cancel() {
// 使用者取消分享後執行的回撥函式
},
fail() {
// alert("分享失敗!"+JSON.stringify(s));
}
}),
// 微信分享到QQ空間
wx.onMenuShareQZone({
title: optionTimeline.title, // 分享標題
link: optionTimeline.link, // 分享連結
imgUrl: optionTimeline.imgUrl, // 分享圖示
desc: optionTimeline.desc,//分享內容
success() {
// 使用者成功分享後執行的回撥函式
},
cancel() {
// 使用者取消分享後執行的回撥函式
},
fail() {
// alert(JSON.stringify(msg));
}
});
// 微信分享到微博
wx.onMenuShareWeibo({
title: optionTimeline.title, // 分享標題
link: optionTimeline.link, // 分享連結
imgUrl: optionTimeline.imgUrl, // 分享圖示
desc: optionTimeline.desc,//分享內容
success() {
// 使用者成功分享後執行的回撥函式
},
cancel() {
// 使用者取消分享後執行的回撥函式
},
fail() {
// alert(JSON.stringify(msg));
}
});
});
wx.error(function() {
// alert(JSON.stringify(e)+'--------error')
// config資訊驗證失敗會執行error函式,如簽名過期導致驗證失敗,具體錯誤資訊可以開啟config的debug模式檢視,也可以在返回的res引數中檢視,對於SPA可以在這裡更新簽名。
});
}
};
export default wxApi;
三、頁面引用
1.在生命週期中呼叫
mounted() {
this.checkSign(); //使用者分享
}
2.在methods()方法中
checkSign() {
// window.__wxjs_is_wkwebview為true 時 為 IOS 裝置 false時 為 安卓 裝置
if (window.__wxjs_is_wkwebview) {
// IOS
if (window.entryUrl == '' || window.entryUrl == undefined) {
var url = location.href.split('#')[0];
window.entryUrl = url; // 將後面的引數去除
}
wxapi.wxRegister(location.href.split('#')[0], 'ios');
} else {
// 安卓
wxapi.wxRegister(location.href.split('#')[0], 'android');
}
},
相關文章
- Vue專案history模式下微信分享總結Vue模式
- Vue專案全域性配置微信分享實踐Vue
- springboot+vue專案如何整合企業微信Spring BootVue
- 微信JSSDK遇見的坑--vue微信自定義分享JSVue
- vue專案使用微信公眾號支付總結Vue
- Vue微信專案按需授權登入策略實踐Vue
- 微信推廣專案
- 第一次做vue微信分享Vue
- 微信分享
- vue 專案快速輸出微信、支付寶、百度小程式Vue
- 如何在 Vue Spa 中使用微信 jssdk 分享介面VueJS
- vue+h5仿微信網頁版聊天室vueWebChat專案VueH5網頁Web
- 微信小程式開源專案集合微信小程式
- vue專案接入微信JSSDK的坑VueJS
- 基於ThinkPHP的微信開發專案-微商城PHP
- 微信分享 - 開荒
- 微信語音分享
- 如何做微信紅包封面專案?
- 記錄--微前端qiankun接入vue2&vue3專案前端Vue
- vue 高仿微信即時 IM 聊天|仿微信 vue+h5 版|仿微信介面VueH5
- 實現微信分享功能
- android微信分享、微信支付的一些坑Android
- 基於mpvue的微信小程式專案搭建Vue微信小程式
- 微信小程式--專案腳手架的搭建微信小程式
- 微信小程式初始化專案架構微信小程式架構
- 微信公眾平臺軟文采集專案
- 分享為什麼不加微信分享呀
- vue實戰仿微信小專案,寫死的資料不涉及到後臺。Vue
- APICloud分享圖片到微信APICloud
- 微信分享測試步驟
- uniapp h5微信分享APPH5
- 微信分享(移動web端)Web
- VUE專案Vue
- Spring Boot專案微信雲託管入門部署Spring Boot
- tp5+ionic開發微信公眾號專案實戰專案教程
- 直擊根源:vue專案微信小程式頁面跳轉web-view不重新整理Vue微信小程式WebView
- 若比鄰-專注微信公眾號軟文分享平臺
- .Net微信網頁開發之使用微信JS-SDK自定義微信分享內容網頁JS