小程序最近发布了新功能,转发到群中的页面,再点击的时候可以获取群信息,比如群ID,那要如何实现呢?
1.在页面中开启“转发”功能
代码如下
onLoad: function () {
wx.showShareMenu({
withShareTicket: true
});
},
2.在页面中设置 “转发”参数
//转发
onShareAppMessage: function () {
return {
title: '转发XXXX',
path: '/pages/retrospect/retrospect',
success: function (res) {
// 转发成功
var shareTickets = res.shareTickets;
var shareTicket = shareTickets;
wx.getShareInfo({
shareTicket: shareTicket,
success: function (res) {
console.log('success');
console.log(res);
//console.log(res);
wx.showToast({
title: '转发成功',
duration: 5000
})
},
fail: function (res) {
console.log('fail');
console.log(res);
wx.showToast({
title: 'fail:' + res.errMsg,
duration: 5000
})
}
});
},
fail: function (res) {
// 转发失败
}
}
}
注:在转发的时候可以获取到shareTicket,使用shareTicket调用wx.getShareInfo可以得到群信息,具体实现请参看后面的代码。
3.响应用户从转发的群中进入
app.js的onLaunch在小程序启动时会触发一次,且直到小程序销毁。app.js中的onShow在小程序显示的时候会触发,只要显示就触发,所以会触发多次。在onLaunch和onShow函数中的参数options可以拿到shareTicket,具体要如何触发需要结合自身场景,简单的示例代码如下,
App({
onLaunch: function (options) {
//this.checkLogin(options.shareTicket);
this.globalData.shareInfo=null;
},
onShow: function (options) {
this.checkLogin(options.shareTicket);
},
checkLogin: function (shareTicket) {
var that = this;
wx.checkSession({
success: function () {
if (!that.globalData.session) {
that.login(shareTicket);
};
},
fail: function () {
that.login(shareTicket);
}
})
},
//登录
login: function (shareTicket) {
var that = this
wx.login({
success: function (r) {
if (r.code) {
that.decodeSession(r.code, shareTicket);
}
wx.getUserInfo({
success: function (res) {
that.globalData.userInfo = res.userInfo;
}
})
}
})
},
//解密session信息
decodeSession: function (code, shareTicket) {
var that = this;
wx.request({
url: urls.WeiXin.FetchSessionInfo,//向后端发起换取session_key请求的URL
data: {
code: code
},
success: function (re) {
if (re.data.Status == 0) {
that.globalData.session = {
openid: re.data.Data.openid,
key: re.data.Data.session_key
};
if (shareTicket) {
that.getShareInfo(shareTicket);
}
}
else {
that.globalData.session = null;
}