引入sdk <script src="https://xxxx/xxx/jweixin-1.6.0.js"></script>
var ctx = window;
var param = {};
ctx.__mm_getWeixinSign = function(resp){
if (resp.ec != 200 && param.debug){
alert(‘get weixin sign failed: ‘ + resp.em);
return;
}
var sign = resp.data.sign;
// debug,jsApiList,callback
wx.config({
debug: param.debug, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
appId: sign.appid, // 必填,公众号的唯一标识
timestamp: sign.timestamp , // 必填,生成签名的时间戳
nonceStr: sign.noncestr, // 必填,生成签名的随机串
signature: sign.signature,// 必填,签名,见附录1
jsApiList: param.jsApiList // 必填,需要使用的JS接口列表,所有JS接口列表见附录2
});
var _shareObj = param.share;
if (!_shareObj) return;
wx.ready(function() {
var com_share = {
title: _shareObj.title, // 分享标题
desc: _shareObj.text, // 分享描述
link: _shareObj.url, // 分享链接
imgUrl: _shareObj.pic, // 分享图标
success: _shareObj.callback,
cancel: function () {
// 用户取消分享后执行的回调函数
}
};
var mmComWx={
weixin:‘onMenuShareTimeline‘,// 分享到朋友圈
weixin_friend:‘onMenuShareAppMessage‘,// 分享给微信朋友
qq:‘onMenuShareQQ‘,// 分享到QQ
qzone:‘onMenuShareQZone‘// 分享到QQ空间
};
for (var k in mmComWx) {
if (_shareObj.configs && _shareObj.configs[k]) {
var share_config = _shareObj.configs[k];
var tit = (k == ‘weixin‘) ? share_config.text : share_config.title;
wx[mmComWx[k]]({
title: tit, // 分享标题
desc: share_config.text, // 分享描述
link: share_config.url, // 分享链接
imgUrl: share_config.pic, // 分享图标
success: share_config.callback,
cancel: function () {
// 用户取消分享后执行的回调函数
}
});
}else{
wx[mmComWx[k]](com_share);
}
}
param.callback && param.callback();
});
};
var index = {
setConfig: function(_param, _callback) {
var ua = navigator.userAgent.toLowerCase();
if (ua.match(/MicroMessenger/i) != "micromessenger") {
return;
}
var url = "https://xxx/api/weixin/share?callback=__mm_getWeixinSign&url="+ encodeURIComponent(location.href);
// 创建script标签,设置其属性
var script = document.createElement(‘script‘);
script.setAttribute(‘src‘, url);
param = _param;
if (_callback) {
param.callback = _callback;
}
// 把script标签加入head,此时调用开始
document.getElementsByTagName(‘head‘)[0].appendChild(script);
}
};
export const wxShare = () => {
return index;
}
//微信二次分享 import {wxShare} from ‘../components/wxshare/index‘ export const initWXShare = () => { const title = ‘‘, text = ‘‘, pic = ‘‘, url = location.href; const share = wxShare(); share.setConfig({ debug: false, // 在生产环境设置为false,在开发环境可以检测是否调用成功 jsApiList: [‘onMenuShareAppMessage‘,‘onMenuShareTimeline‘,‘updateAppMessageShareData‘,‘updateTimelineShareData‘], share: { title: title,//分享标题 text: text,//分享副标题 pic: pic,//分享Card中的缩略图 url: url,//分享链接 configs: { ‘weixin‘: { title, text, url: `${url}&src=weixin`, pic, share_type: ‘web‘ }, ‘weixin_friend‘: { title, text, url: `${url}&src=friend`, pic, share_type: "web" //类型,可选值为web | image,默认不传为web分享。 }, ‘qzone‘: { title, text, url: `${url}&src=qzone`, pic, share_type: "web" // 分享的类型,可选值为web | image,默认不传为web分享。 }, ‘qq‘: { title, text, url: `${url}&src=qq`, pic, share_type: "web" // 型,可选值为web | image,默认不传为web分享。 }, ‘sina‘: { title, text, url: `${url}&src=sina`, pic, share_type: "web" // 型,可选值为web | image,默认不传为web分享。 } } } }) }
原文:https://www.cnblogs.com/sybboy/p/13235564.html