uni-app微信分享需分平台:小程序必须用onShareAppMessage/onShareTimeline页面级函数并三重配置(manifest、pages.json、后台开关);App/H5则必须调用uni.share,且provider、HTTPS图片、签名缺一不可。

uni-app 实现分享到微信,关键在分清「平台」和「触发方式」——小程序里不能调用 uni.share,必须靠页面生命周期函数;App/H5 里反而必须用 uni.share,且 provider、target、签名一个都不能少。混用逻辑是失败主因。
小程序:onShareAppMessage 必须页面级定义 + 两处配置全开
右上角“分享给朋友”按钮灰色?不是代码没写,而是配置卡死了。它需要三重确认同时满足:
-
manifest.json→ 「App模块配置」→ 「Share(分享)」→ 勾选「微信分享」,并填对mp-weixin.appid -
pages.json对应页面 style 下加"enableShareAppMessage": true(注意不是全局,每个页面单独配) - 页面
export default中直接定义onShareAppMessage,和data、onLoad同级,不能塞进methods或setup()里
常见错误:写了函数但按钮仍灰,大概率是前两项漏了;写了但点开提示「当前页面未设置分享」,说明 pages.json 配了 false 或压根没写。
App/H5:uni.share 必须带 provider: 'weixin',且 H5 要先 wx.config
uni.share 在小程序里完全无效,只适用于 App 或微信内嵌 H5。但行为差异极大:
- H5 环境下必须先调用
wx.config完成 JS-SDK 初始化,url参数必须和当前完整地址(含#和 query)严格一致,否则报config:invalid signature - App 端不支持
target: 'timeline'(朋友圈),传了也会 fallback 到好友分享 - 所有平台都要求
imageUrl是 HTTPS 直链,/static/xxx.jpg这类路径一律无效 - 安卓微信 8.0.33+ 要求图片尺寸 ≥ 300×300px,否则显示灰色占位图
别指望自动识别 provider —— 显式写 provider: 'weixin' 是硬性要求,漏掉就走默认逻辑,大概率静默失败。
朋友圈分享:onShareTimeline 强制三开关 + 字段极简
朋友圈入口消失、点击无反应?90% 是三处开关缺一环:
-
manifest.json已勾选「微信分享」 -
pages.json页面 style 下加"enableShareTimeline": true(注意不是enableShareAppMessage) - 微信公众平台后台 → 小程序「设置」→ 「功能设置」→ 手动开启「分享到朋友圈」(2026 年仍需人工开通)
且 onShareTimeline 返回对象只接受 title、path、imageUrl 三个字段,多一个都可能降级为纯文字链接;path 不能带空格、中文、特殊符号,建议用 encodeURIComponent 处理参数。
自定义按钮 vs 右上角:open-type="share" 仅触发 onShareAppMessage
想用按钮唤起分享? 只能触发 onShareAppMessage,对朋友圈无效。朋友圈只能由右上角菜单触发,且 onShareTimeline 的 option 参数始终为空对象,无法区分来源。
如果要实现「按钮分享带参数、右上角分享固定文案」,得靠 option.from === 'button' 在 onShareAppMessage 里做分支,但朋友圈卡片文案只能统一配置,没有 from 字段可用。
最易被忽略的其实是 path 校验:朋友圈卡片里 path 写错一个斜杠、漏掉 / 开头、或用了非法字符,都会导致点开白屏或 404,而控制台不报错——建议直接拿该 path 在微信开发者工具里手动跳转测试是否可达。











