本文主要发送朋友和朋友圈两种
1.创建share.js文件:
function shareJs(jssdk, options) {
wx.config({
debug: false, //是否打开调试模式
appId: jssdk.appId,
timestamp: parseInt(jssdk.timestamp),
nonceStr: jssdk.nonceStr,
signature: jssdk.signature,
jsApiList: [
'onMenuShareTimeline',
'onMenuShareAppMessage'
]
});
var defaults = {
title: '分享的标题',
desc: '分享的描述',
link: location.href, // 分享页面地址,不能为空
imgUrl: 'https://tup.iheima.com/sport.png', // 分享是封面图片,不能为空
success: function () {}, // 分享成功触发
cancel: function () {} // 分享取消触发,需要时可以调用
}
options = Object.assign({}, defaults, options);
wx.ready(function () {
var thatopts = options;
wx.onMenuShareTimeline({
title: thatopts.title, // 分享标题
desc: thatopts.desc, // 分享描述
link: thatopts.link, // 分享链接
imgUrl: thatopts.imgUrl, // 分享图标
success: function () {
// alert("成功");
},
cancel: function () {
// alert("失败")
}
});
wx.onMenuShareAppMessage({
title: thatopts.title, // 分享标题
desc: thatopts.desc, // 分享描述
link: thatopts.link, // 分享链接
imgUrl: thatopts.imgUrl, // 分享图标
success: function () {
// alert("成功");
},
cancel: function () {
// alert("失败")
}
});
});
}
2.页面处理
引入文件:
<script src="/public/{{staticVersion}}js/share.js"></script>
<script src='https://res.wx.qq.com/open/js/jweixin-1.0.0.js'></script>
// 不需要拼接地址的地方
let jssdk = {{wechat.data|stringify|safe}};
// 准备好要传入到utils.js文件中的参数。
let optionData = {
title: '{{result.title}}',
desc: '{{webdiy.name}}',
link: '{{ shareurl}}',
imgUrl: 'https:{{webdiy.wechat_service_qrcode}}'
};
shareJs(jssdk, optionData);
3.服务端处理协议
controller
出了一些问题,在测试环境始终无法识别https
暂采用以下方法:
let xHttpsProxyHost = ctx.request.header['x-https-proxy-host']
const protocol = xHttpsProxyHost ? 'https' : 'http';
为避免二次分享问题:
//进入时判断带有后缀则跳转
var link = window.location.href.split("?")[0];
if(link !== window.location.href)
{
window.location.href = link;
}