QQ扫一扫联系
文章写得再好,转发到微信群时如果只有一个光秃秃的链接和一张默认图,点击率会低很多。微信的分享卡片长什么样,取决于页面里有没有配 JS-SDK 的分享参数。
微信分享设置做的就是这件事:给页面配上分享标题、描述、缩略图,让转发出去是一张正常的卡片。
第一步,填公众号信息。后台「系统设置 → 微信分享设置」里填 AppId、AppSecret,再选一张默认分享图。AppSecret 不是 AppID,两个在公众号后台的「开发 → 基本配置」里都能拿到,别填混。

第二步,配 IP 白名单。同一个页面里还有「IP 白名单」,把服务器的出口 IP 填进公众号后台。这一步漏了的表现是接口报错 40164 invalid ip,但页面上看不出来,只在抓包时能看到。
第三步,配域名。公众号后台 → 设置与开发 → 公众号设置 → 功能设置,把站点的域名加到「JS接口安全域名」和「业务域名」里。域名要带协议头校验,且必须是已备案的。
三项配完,打开「启用微信分享」,页面在微信里被转发时就会带自定义的标题、描述、图。
不用改后台,直接在模板的任意元素上加属性:
<div data-wechat-share-title="分享标题"
data-wechat-share-desc="分享描述"
data-wechat-share-image="分享图片地址">
...
</div>
模块会去页面里找这三个属性,取到就用作分享内容。放在 <body> 上就是整页统一,放在某篇文章的容器上就是这篇文章自己的分享信息。
这是这套做法里最舒服的一点:内容页不用为分享单独写一套逻辑。模板里已经有标题和封面,把它们同时写进 data- 属性就行,改内容的时候分享信息跟着变。
配置里有两个跟图相关的项:
第二个开关看起来多余,实际有用:站里的文章封面尺寸不一,有些是竖图,有些截图里带一堆文字,做成方形缩略图后很难看。统一用一张设计好的品牌图,转发出去更整齐。代价是每篇分享长得都一样,看不出内容。
折中做法是关掉「优先」,让页面图生效,同时把模板里的封面裁成接近 1:1。微信的分享缩略图是方的,横图会被裁中间那一块。
配置里有一个「启用微信分享调试」。打开之后,在微信里打开页面会弹出 config:ok 之类的提示,用来确认签名有没有成功。
坑一:配好了但不生效。
这是最常见的反馈。现象是:调试弹窗显示 config 成功,但转发出去的卡片还是默认样式。
原因不在代码。微信对网页分享有一条没写在文档里的限制:链接必须从公众号的对话页面点进去,分享才会带上自定义信息。在微信开发者工具里、在电脑版微信里、从浏览器复制链接发到群里,都不生效。
所以验证的方法是:手机上、在公众号对话框里点开链接、再点右上角转发。其他路径测不出来。这一条不是官方文档写的,是社区里大量开发者反复验证出来的,值得先知道,能省掉半天排查。
坑二:noPermissionJsApi。
调试弹窗里出现这样的错误:
noPermissionJsApi:["updateAppMessageShareData", "updateTimelineShareData"], errMsg: "config:ok"
意思是签名 OK 了,但这个公众号没有调用分享接口的权限。去公众号后台 → 接口权限 → 分享接口,看「分享到朋友圈」和「分享给朋友」是不是已开启。未认证的订阅号通常没有这两项权限,这种情况改代码没用,得先完成认证。
内容站。文章、资讯、案例,转发是主要流量来源之一,卡片样式直接影响点击。
有公众号的服务号。已经认证、有分享接口权限,配一遍就能用。
不适合:纯功能后台、内部系统。没人会转发这些东西。
也不适合:还没做公众号认证的站。AppId 和 Secret 拿得到,接口权限拿不到,配完只会多一个错误提示。
这套东西依赖微信的 JS-SDK 签名,签名用的 access_token 有有效期(两小时),模块内部会缓存和刷新。如果站点的服务器时间不准,签名会失败——表现同样是「调试不通过」。
服务器时间偏差超过几分钟就会出现这个问题,部署后对一下 NTP。这是所有接微信 JS-SDK 的项目都会遇到的一类故障,跟模块本身没关系。