前端调用微信分享函数封装(适用于原生页面和其他框架项目)

之前做微信分享总会出问题,这次封装个函数减少以后在这方面浪费更多的时间。适用于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 }

 

 

以上

 

posted @ 2018-11-15 11:05  blackbentel  阅读(2430)  评论(0编辑  收藏  举报