一、首先讲解一下需要用到的API
- Page.onShareAppMessage()
设置右上角“转发”配置,及转发后回调函数返回 shareTicket 票据 - wx.showSahreMenu()
显示当前页面的转发按钮 - wx.hideShareMenu()
隐藏转发按钮 - wx.getShareInfo()
获取转发详细信息
二、流程
转发前配置—-转发时—-转发到群组后打开—-二次转发
(1)页面内按钮转发
button type="warn" open-type="share" data-tag="share1" id="btn_share1"发送微信给好友/button(2)或者右上角转发
三、代码实现
(1)转发前配置
在页面 onLoad 方法添加
wx.showShareMenu({ withShareTicket: true })withShareTicket 为 true 时,表示允许转发时是否携带 shareTicket。
shareTicket是获取转发目标群信息的票据,只有拥有shareTicket才能拿到群信息,用户每次转发都会生成对应唯一的shareTicket
如果转发的对象是个人的话,就不会有shareTicket这个参数
(2)转发时获取群信息
当某个小程序被转发到群组后,开发者想获取到转发目标群组信息,将用户和群组做某种绑定关系(openId + openGid)。
onShareAppMessage:function(options){ let that = this; return { title:'我是转发的东西', //'此为转发页面所显示的标题' desc: '江湖救急,还请贵人伸手相助啊!', //'此为转发页面的描述性文字' path:'pages/api/api', //'此为转发给微信好友或微信群后,对方点击后进入的页面链接,可以根据自己的需求添加参数' success:function(res){ let shareTickets = '' ; '//转发到群 会有res.shareTickets 转发到个人无res.shareTickets' let shareTickets = res.shareTickets if (shareTickets && shareTickets.length===0){ return false; } wx.getShareInfo({ shareTicket:shareTicket[0], success:function(res){ let encryptedData = res.encryptedData let iv = res.iv } }) } } }shareTickets是一个数组,每一项是一个shareTickets,对应一个转发对象,转发给用户不会包含shareTickets
拿到shareTickets后,使用wx.getShareInfo()获取已经加密的encryptedData用户信息和向量IV
(3)转发到群组后打开
用户将小程序转发到微信群组后,群成员打开小程序,通过 shareTicket,开发者就能将群成员和群组绑定起来(openId + openGid).
Page({ onLoad: function(opt) { '/** 判断场景值,1044 为转发场景,包含shareTicket 参数 在群组中打开小程序,页面onLoad 或 onShow 方法包含 scene 和 shareTicket,需要判断 scene 是否为1044,如果不是则不包含 opt 中 shareTicket 参数*/' if (opt.scene == 1044) { wx.getShareInfo({ shareTicket: opt.shareTicket, success: function(res){ var encryptedData = res.encryptedData; var iv = res.iv; } }) } }})(4)二次转发
二次转发重复前3个步骤













