微信小程序“分享到朋友圈”必须手动触发且需三处开关全开启:manifest.json勾选微信分享、pages.json配置enablesharetimeline、后台手动开通;onsharetimeline须页面级定义、与onload平级,且须与onshareappmessage共存;imageurl须https直链、≥300×300px,path无效仅支持query传参,返回对象须同步。

微信小程序里“分享到朋友圈”不能靠按钮主动唤起,必须用户手动点右上角菜单触发;配置漏掉任意一环,入口就静默消失,连报错都没有。
onShareTimeline 必须页面级定义,全局混入无效
这个函数不是 methods 里的普通方法,也不能通过 Vue.mixin 或 App.vue 注入。它必须和 data、onLoad 平级,直接写在页面的 export default 对象里:
- ❌ 错误:放在
methods内部、用 mixin 注册、在<script setup></script>里只声明不挂载 - ✅ 正确:在
pages/index/index.vue中直接写onShareTimeline() { return { title: 'xxx', imageUrl: 'https://...' } } - ⚠️ 注意:
onShareTimeline和onShareAppMessage必须共存于同一页面,否则朋友圈入口不显示(微信底层强制校验)
三处开关缺一不可,漏一个就静默失效
朋友圈入口不会报错、不会提示,只会彻底消失。必须同时满足:
-
manifest.json→ 「App模块配置」→ 「Share(分享)」→ 勾选「微信分享」,并填对mp-weixin.appid -
pages.json→ 对应页面配置中加"enableShareTimeline": true(不是enableShareAppMessage) - 微信公众平台后台 → 小程序「设置」→「功能设置」→ 手动开启「分享到朋友圈」开关(2026 年仍需人工开通)
imageUrl 和 path 的硬性限制最容易被忽略
朋友圈卡片对字段极其敏感,一个字符不对就变白卡或 404:
-
imageUrl必须是 HTTPS 直链,/static/xxx.jpg或相对路径全部无效 - 安卓微信 8.0.33+ 要求图片 ≥ 300×300px,否则降级为灰色占位图;推荐 500×500、1:1 比例
-
path在onShareTimeline中不生效,只能用query传参,例如query: 'id=123' - 若需带中文或特殊字符,必须对每个值单独
encodeURIComponent,比如query: `name=${encodeURIComponent('张三')}` - 图片 URL 必须能被微信服务器直访问——用浏览器打开该链接,能正常加载才算合格
基础库和真机调试必须同步验证
开发工具里看着正常,不代表真机能用:
- 微信客户端基础库版本必须 ≥ 2.24.4,检查路径:「发现 → 小程序 → 右上角 → 设置 → 关于小程序」
- 开发者工具需设为「最新版」并重启,旧版模拟器可能跳过权限校验
-
onShareTimeline返回对象必须同步,不能用async、await或 Promise,否则按钮变灰无响应 - 朋友圈打开的小程序是单页模式,顶部有固定导航栏、底部有「前往小程序」按钮,且不支持跳转其他页面——业务逻辑要适配这种限制
最常被跳过的其实是图片直链可访问性验证和后台人工开关,这两项不确认,其余全写对也没用。











