1、官方文档微信官方JSSDK使用文档说明
2、.首先安装微信js-sdk,针对vue我们就采用npm的安装形式,npm install weixin-js-sdk --save-dev
3、新建wxshare.js模块
import axios from './http'
import url from "./apiconfig"
import wx from 'weixin-js-sdk';
//
//要用到微信API
function getJSSDK(shareUrl,dataForWeixin) {
axios.post(url.wxShare,{shareUrl}).then(res => {
console.log(res);
//console.log(typeof(res));
// let response=JSON.parse(res.data);
// console.log(response)
wx.config({
debug: false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
appId: res.data.appId, // 必填,公众号的唯一标识
timestamp: res.data.timestamp, // 必填,生成签名的时间戳
nonceStr: res.data.noncestr, // 必填,生成签名的随机串
signature: res.data.signature, // 必填,签名
jsApiList:[
'onMenuShareTimeline',
'onMenuShareAppMessage'
] // 必填,需要使用的JS接口列表
})
wx.ready(function () {
//分享给微信朋友
wx.onMenuShareAppMessage({
title: dataForWeixin.title,
desc: dataForWeixin.des,
link: dataForWeixin.linkurl,
imgUrl: dataForWeixin.img,
success: function success(res) {
console.log('已分享');
},
cancel: function cancel(res) {
console.log('已取消');
},
fail: function fail(res) {
alert(JSON.stringify(res));
}
});
// 2.2 监听“分享到朋友圈”按钮点击、自定义分享内容及分享结果接口
wx.onMenuShareTimeline({
title: dataForWeixin.title,
link: dataForWeixin.linkurl,
imgUrl: dataForWeixin.img,
success: function success(res) {
//alert('已分享');
},
cancel: function cancel(res) {
//alert('已取消');
},
fail: function fail(res) {
alert(JSON.stringify(res));
}
});
// 2.3 监听“分享到QQ”按钮点击、自定义分享内容及分享结果接口
// wx.onMenuShareQQ({
// title: dataForWeixin.title,
// desc: dataForWeixin.desc,
// link: dataForWeixin.linkurl,
// imgUrl: dataForWeixin.img,
// trigger: function trigger(res) {
// //alert('用户点击分享到QQ');
// },
// complete: function complete(res) {
// alert(JSON.stringify(res));
// },
// success: function success(res) {
// //alert('已分享');
// },
// cancel: function cancel(res) {
// //alert('已取消');
// },
// fail: function fail(res) {
// //alert(JSON.stringify(res));
// }
// });
// 2.4 监听“分享到微博”按钮点击、自定义分享内容及分享结果接口
// wx.onMenuShareWeibo({
// title: dataForWeixin.title,
// desc: dataForWeixin.desc,
// link: dataForWeixin.linkurl,
// imgUrl: dataForWeixin.img,
// trigger: function trigger(res) {
// //alert('用户点击分享到微博');
// },
// complete: function complete(res) {
// // alert(JSON.stringify(res));
// },
// success: function success(res) {
// //alert('已分享');
// },
// cancel: function cancel(res) {
// // alert('已取消');
// },
// fail: function fail(res) {
// // alert(JSON.stringify(res));
// }
// });
})
wx.error(function (res) {
alert("微信验证失败");
});
})
}
export default {
// 获取JSSDK
getJSSDK
}
4、在要微信分享的组件内引入
import sdk from "@/wxshare"
5、在组件内created或mounted函数中调用方法,并将需要分享的数据(标题、图片、描述、链接)传入函数中
mounted(){
let wxshare=JSON.parse(localStorage.getItem("wxshare"));
let obj={
title:wxshare.projectname,
des:wxshare.des,
linkurl: "http://**/static/dist/index.html#/detail/"+localStorage.getItem("projectid"),//分享链接
img: wxshare.imgUrl,
}
let url = encodeURIComponent(location.href.split('#')[0]);
sdk.getJSSDK(url, obj)
},
1. 请求签名时如果使用Vue的全路径(包括#部分路由)请求时会报签名失败或者无效的签名,因此我们需要使用以下方法来避免此问题
- 使用 location.href.split('#')[0] 获取到url中#之前的部分,将获取的url 传给后台请求签名
- 请求使用post, 保证传给后台的url是不经过任何加工的
2、给后台的url用encodeURIComponent()编码,后台解码
3、安卓无效问题:updateAppMessageShareData、updateTimelineShareData这两个接口无效,原有的
wx.onMenuShareTimeline、wx.onMenuShareAppMessage、wx.onMenuShareQQ、wx.onMenuShareQZone
接口,即将废弃。请尽快迁移使用客户端6.7.2及JSSDK 1.4.0以上版本支持的
wx.updateAppMessageShareData、updateTimelineShareData 接口。换回原来的方法就可以了
invalid signature签名错误。建议按如下顺序检查:
确认签名算法正确,可用 http://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=jsapisign 页面工具进行校验。