跳转到主内容
websoft网络软件专家 - 深耕网络技术,打造实用软件!

uni-app实现微信小程序群分享 uni-app获取分享票据信息

uni-app微信小程序群分享必须在页面export default中定义onShareAppMessage函数并返回含title、path(需带参数)及withShareTicket: true的对象,通过uni.getShareInfo获取openGId,且须配置requiredPrivateInfos、真机调试验证。 uni-app 微信 小程序群分享必须用
onShareAppMessage
且返回
shareTicket
微信小程序 原生支持群分享的关键是
onShareAppMessage
回调中返回的
shareTicket
字段,uni-app 中同样依赖它——但默认不自动透出,需手动配置并处理。很多开发者卡在“点了分享没群信息”或“
shareTicket
为
undefined
”,根本原因是没在页面生命周期里正确声明回调,或没在转发时显式启用群能力。 实操要点: 必须在页面(
.vue
文件)的
export default
选项中定义
onShareAppMessage
函数,不能只写在
methods
里 返回对象中必须包含
title
、
path
,且
path
需带参数(如
path: '/pages/index/index?from=group'
),否则群分享入口可能被折叠 要获取群票据,必须在返回对象中加
withShareTicket: true
(注意不是
shareTicket: true
) 仅当用户从「群聊」点击该分享卡片进入时,
onLoad
或
onShow
的
options
中才可能有
shareTicket
;单独转发给个人不会携带
onLoad
中拿不到
shareTicket
?检查
getShareInfo
调用时机和 scope 声明 即使分享时设置了
withShareTicket: true
,页面 onLoad 接收到的
options
里也大概率只有
scene
和
query
,
shareTicket
不会直接出现在里面。这是微信限制:票据需通过
wx.getShareInfo
(uni-app 中为
uni.getShareInfo
)解密获取,且必须在用户点击分享卡片后的 5 分钟内调用。 常见错误与对策: 在
onLoad
里直接调
uni.getShareInfo({ shareTicket: options.shareTicket })
→ 报错
shareTicket is required
,因为
options.shareTicket
根本不存在——正确做法是先判断
options.scene === '1089'
(群聊场景值),再尝试从
options
中取
shareTicket
,但实际仍为空,得靠
uni.getShareInfo
的回调参数返回 未在
app.json
或
mp-weixin.json
中声明
"requiredPrivateInfos": ["getShareInfo"]
→ 小程序基础库 2.27.0+ 强制要求,否则
getShareInfo
直接失败,控制台报
permission denied
用户未授权或拒绝过权限 →
getShareInfo
返回
errCode: -1
,需提示重新触发分享(不能静默失败) 群分享票据解密后拿到的是
openGId
,不是
groupId
调用
uni.getShareInfo
成功后,返回的
res
是一个对象,其中
res.openGId
才是当前群的唯一标识(类似群的 openID),而
res.cloudID
已废弃,
res.groupId
并不存在。很多开发者误以为能拿到微信群 ID 或名称,实际上微信只提供
openGId
,且该字段仅在群内打开时有效、不可跨群复用。 微信公众平台开发入门教程 中文WORD版 由于微信的大热,为了更好的方便使用微信的用户查询一些信息,这篇文章是入门级的微信公众平台开发教程,需要的朋友可以参考下 这篇入门教程将引导你完成如下任务: 创建百度云平台应用启用微信公众平台开发模式获取订阅、文字、图片、语音、视频消息回复文本、图文及音乐消息程序开发 下载 注意事项:
openGId
是服务端校验群身份的核心依据,前端拿到后应立即传给后端,由后端用
access_token
+
openGId
调用微信接口
https://api.weixin.qq.com/wxa/get_group_info
获取群名等扩展信息 前端不应缓存
openGId
长期使用,每次进群都应重新走分享→进入→
getShareInfo
流程 若后端校验失败,常见原因是:
access_token
过期、
openGId
已失效(超过 24 小时)、或当前小程序未开通“获取群信息”类目权限(需在 MP 后台提交审核) 真机调试才能验证群分享逻辑,开发者工具无法模拟
shareTicket
微信开发者工具对群分享的支持极弱:即使手动修改
scene
为
1089
,也无法生成有效的
shareTicket
,
uni.getShareInfo
必然失败。所有逻辑必须在真机上测试,且需满足三个硬条件:① 小程序已上传体验版或正式版;② 测试账号已在后台配置为体验者;③ 分享操作必须由真实微信群内发起(不能是单聊或桌面快捷方式)。 调试建议: 在
onLoad
中加
console.log('scene:', options.scene, 'query:', options.query)
,确认是否进入群场景(
scene === '1089'
) 在
getShareInfo
的 success 回调里打印
res
,确认
openGId
是否存在;失败时打印
err
看具体 code 避免在
onShow
反复调用
getShareInfo
,一次成功即可,重复调用可能因超时或票据失效导致失败 群里转发路径和票据解密是链式动作,任一环节断开都会导致
openGId
拿不到。最常被忽略的是
requiredPrivateInfos
配置和真机验证环节——没配就永远拿不到,不真机就永远看不出问题。

相关文章