普通分享(默认分享)区分好友和群的分享区分不同群的分享普通分享普通分享即默认分享,普通的分享功能很容易实现,我们可以直接在JS文件中实现分享的方法即可,如下:
/用户点击右上角分享/onShareAppMessage:function(){return{title:'测试小程序',//分享内容path:'/pages/index/index',//分享地址imageUrl:'/images/img_share.png',//分享图片}}通过上述代码(return中参数也可不填,默认分享当前页),即可实现简单的分享功能。但是在正式的项目中,这种分享往往不能满足我们的需求,比如我们需要根据分享的不同方式,给予不同形式的奖励,分享到好友加10个奖励,分享到群加30个奖励等。如何区分用户是分享到好友还是分享到群呢,这就涉及到了我们所说的第二种分享:区分好友和群的分享。
区分好友和群的分享关于区分好友和群分享,我们先看下
/用户点击右上角分享/onShareAppMessage:function(){wx.showShareMenu({withShareTicket:true})return{title:'测试小程序',//分享内容path:'/pages/index/index',//分享地址imageUrl:'/images/img_share.png',//分享图片success:function(res){if(res.errMsg=='shareAppMessage:ok'){//判断分享是否成功if(res.shareTickets==undefined){//判断分享结果是否有群信息//分享到好友操作...}else{//分享到群操作...varshareTicket=res.shareTickets[0];wx.getShareInfo({shareTicket:shareTicket,success:function(e){//当前群相关信息varencryptedData=e.encryptedData;variv=e.iv;}}}}}}}在这里我们通过在分享的方法中,设置
wx.showShareMenu({withShareTicket:true})添加该方法后,即可在分享成功的回调中获取到分享群信息,通过wx.getShareInfo方法,即可获取到当前群的encryptedData和iv信息。到这里,分享到好友和群的区分就实现了。到这里我们通过wx.getShareInfo方法获取到了一些群信息,能否通过这些信息区分不同的群呢,答案是不能的,接下来,我们开始介绍分享到不同群如何实现。
区分不同群的分享上文中已经说明了,通过wx.getShareInfo方法可以获取转发详细信息,我们还是先来看一下该方法在官方文档中的说明:
varWXBizDataCrypt=require('./WXBizDataCrypt')varappId='wx4f4bc4dec97d474b'varsessionKey='tiihtNczf5v6AKRyjwEUhQ=='varencryptedData='CiyLU1Aw2KjvrjMdj8YKliAjtP4gsMZM'+'QmRzooG2xrDcvSnxIMXFufNstNGTyaGS'+'9uT5geRa0W4oTOb1WT7fJlAC+oNPdbB+'+'3hVbJSRgv+4lGOETKUQz6OYStslQ142d'+'NCuabNPGBzlooOmB231qMM85d2/fV6Ch'+'evvXvQP8Hkue1poOFtnEtpyxVLW1zAo6'+'/1Xx1COxFvrc2d7UL/lmHInNlxuacJXw'+'u0fjpXfz/YqYzBIBzD6WUfTIF9GRHpOn'+'/Hz7saL8xz+W//FRAUid1OksQaQx4CMs'+'8LOddcQhULW4ucetDf96JcR3g0gfRK4P'+'C7E/r7Z6xNrXd2UIeorGj5Ef7b1pJAYB'+'6Y5anaHqZ9J6nKEBvB4DnNLIVWSgARns'+'/8wR2SiRS7MNACwTyrGvt9ts8p12PKFd'+'lqYTopNHR1Vf7XjfhQlVsAJdNiKdYmYV'+'oKlaRv85IfVunYzO0IKXsyl7JCUjCpoG'+'20f0a04COwfneQAGGwd5oa+T8yO5hzuy'+'Db/XcxxmK01EpqOyuxINew=='variv='r7BXXKkLb8qrSNn05n0qiA=='varpc=newWXBizDataCrypt(appId,sessionKey)vardata=pc.decryptData(encryptedData,iv)console.log('解密后data:',data)可以看出,我们想要解密,需要传递如下参数:appId、sessionKey、encryptedData和iv,其中appId就是我们当前小程序的appId,encryptedData和iv是我们通过wx.getShareInfo()方法获取到的,还有一个参数sessionKey是未知的,那么这个参数要如何获取呢?我们接着看加密数据解密算法的文档:
我们在界面初始化的时候,调用wx.login()方法,将该方法返回的code作为参数传递给服务器即可(没有封装服务器接口,可暂时使用微信提供的接口做测试,不推荐),用来获取sessionKey,并将获取到的sessionKey的值保存到data中。在微信的分享方法onShareAppMessage中,我们依次调用wx.showShareMenu()和wx.getShareInfo()方法,获取分享到群返回的encryptedData和iv。从data中取出sessionKey,将其和encryptedData、iv、appId作为参数传递给解密方法varpc=newWXBizDataCrypt(appId,sessionKey)和vardata=pc.decryptData(encryptedData,iv),进而通过data获取相应解密信息。到这里,微信中涉及到的三种不同方式的分享方法就介绍完了,如有问题,欢迎留言。













