前端调用微信分享函数封装(适用于原生页面和其他框架项目)
之前做微信分享总会出问题,这次封装个函数减少以后在这方面浪费更多的时间。适用于6.7.2之前版本和更高版本的微信
代码中没有请求微信 jsTicket 部分,这部分前端只要传对url 就行,常出现的是签名问题,不过前端传的url正确的话还报签
名错误的话就可以把锅让后端的小哥哥们背着了。
请求jsTicket 时 url 获取方式
var url = encodeURIComponent(location.href.split('#')[0])
然后上封装之后的微信分享代码
1 /** 2 * 作者: blackbentel 3 * 时间: 2018-11-15 4 * 更新时间: 2019-04-26 5 * 更新内容: 去掉微信高低版本判断,经尝试高版本分享方法用不了 6 微信分享使用方式 7 1. 引入微信js-sdk 文件 http://res2.wx.qq.com/open/js/jweixin-1.4.0.js 8 2. 引入这个文件 9 3. 在有自定义分享功能的页面开始的时候或者加载后就该调用 setwxShareConfigInfo(wxConfig, shareData) 10 入参 11 wxConfig = { // 请求来的jsTicket (必须) 12 appId: '' // 必填,公众号的唯一标识 13 timestamp: '', // 必填,生成签名的时间戳 14 noncestr: '', // 必填,生成签名的随机串 15 signature: '', // 必填,签名 16 } 17 shareData = { // 分享信息和回调 (非必须) 18 title: '', // 分享标题 (非必填) 19 desc: '', // 分享描述 (非必填) 20 link: '', // 分享链接 (非必填) 21 imgUrl: '', // 分享缩略图 (非必填) 22 success: function, // 分享成功回调(非必填) 23 fail: function, // 分享失败回调(非必填) 24 cancel: function, // 取消分享回调(非必填) 25 } 26 */ 27 28 // 微信分享功能 29 function setwxShareConfigInfo (wxConfig, shareData) { 30 31 // 判断是否是6.7.2及更高版本的微信 32 // var wechatInfo = navigator.userAgent.match(/MicroMessenger\/([\d\.]+)/i) 33 // var isWechatHighVersion = wechatInfo[1] >= '6.7.2' 34 35 var shareInfo = { 36 title: (shareData && shareData.title) || document.title, 37 desc: (shareData && shareData.desc) || location.href, 38 link: (shareData && shareData.link) || location.href, 39 } 40 shareData && shareData.imgUrl ? (shareInfo['imgUrl'] = shareData.imgUrl) : null 41 shareData && shareData.success ? (shareInfo['success'] = shareData.success) : null 42 shareData && shareData.fail ? (shareInfo['fail'] = shareData.fail) : null 43 shareData && shareData.cancel ? (shareInfo['cancel'] = shareData.cancel) : null 44 wx.config({ 45 debug: false, // 改为true会alert一些调试信息 46 appId: wxConfig.appId, // 必填,公众号的唯一标识 47 timestamp: wxConfig.timestamp, // 必填,生成签名的时间戳 48 nonceStr: wxConfig.noncestr, // 必填,生成签名的随机串 49 signature: wxConfig.signature, // 必填,签名 50 jsApiList: ['checkJSApi', 'onMenuShareAppMessage', 'onMenuShareTimeline', 'onMenuShareQQ', 'onMenuShareQZone', 'updateAppMessageShareData', 'updateTimelineShareData'] // 必填,需要使用的JS接口列表,所有JS接口列表见附录2 51 }) 52 wx.checkJsApi({ 53 jsApiList: ['onMenuShareAppMessage', 'onMenuShareTimeline', 'onMenuShareQQ', 'onMenuShareQZone', 'updateAppMessageShareData', 'updateTimelineShareData'], 54 success: function (res) { 55 // 以键值对的形式返回,可用的api值true,不可用为false 56 // 如:{"checkResult":{"chooseImage":true},"errMsg":"checkJsApi:ok"} 57 } 58 }) 59 // 通过ready 60 wx.ready(function () { 61 lowVersionshare(shareInfo) 62 highVersionshare(shareInfo) 63 /* if (isWechatHighVersion) { 64 highVersionshare(shareInfo) 65 } else { 66 lowVersionshare(shareInfo) 67 } */ 68 }) 69 } 70 71 // 6.7.2及更高版本微信分享 72 function highVersionshare(data) { 73 wx.updateTimelineShareData(data) 74 wx.updateAppMessageShareData(data) 75 } 76 77 // 6.7.2以下版本微信分享 78 function lowVersionshare(data) { 79 // 分享给朋友 80 wx.onMenuShareAppMessage(data) 81 // 分享到朋友圈 82 wx.onMenuShareTimeline(data) 83 // 分享到qq 84 wx.onMenuShareQQ(data) 85 86 // 分享到qq空间 87 wx.onMenuShareQZone(data) 88 }
以上