扫描二维码 上传二维码
域名商店
选择防红平台类型,避免链接被拦截
选择允许访问的平台类型

微信自定义分享链接

想在微信里控制分享出去的那张卡片,比如标题、摘要和封面图,单靠页面里写几个 meta 标签是不够的。微信浏览器实际会读取页面接入的 JS-SDK 配置,只有完成签名和授权,自定义分享才会真正生效。整套流程不算复杂,但横跨公众号后台、服务端签名和前端配置三块,任何一处对不上,分享出去很可能还是默认样式。

先把账号和域名这些基础条件准备好。你需要一个已经完成认证的微信公众号。分享类接口通常不对个人主体开放,一般要有企业资质。认证完成后,在公众平台的“开发—基本配置”里可以找到 AppID 和 AppSecret,这两个值是后续获取凭据、生成签名的基础。接着设置“JS 接口安全域名”,也就是网页实际部署的域名。这个域名需要完成 ICP 备案,设置时还要按页面提示放置校验文件,证明域名确实由你控制。另外,服务器 IP 白名单也容易被忽略。它决定了你的服务器能不能调用微信接口,尤其是在获取 access_token 时,微信会校验请求来源 IP。如果服务器 IP 变了,记得及时回后台更新。

后端签名是整个流程的核心,也是问题最多的地方。第一步是用 AppID 和 AppSecret 请求微信接口获取 access_token,接口地址是 https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET。access_token 的有效期是 7200 秒,服务端不要每次现取,最好全局缓存起来,并提前几分钟刷新,避免刚好在过期边界上出问题。拿到 access_token 后,再换取 jsapi_ticket,它同样是 7200 秒有效期,也要做缓存。



生成签名时,需要准备 jsapi_ticket、随机字符串 nonceStr、秒级时间戳 timestamp,以及当前页面的完整 URL。这里有一个最常见的坑:签名用的 URL 必须和用户浏览器里实际打开的地址完全一致,包括协议、域名、路径和查询参数,通常只去掉 # 后面的锚点部分。四个参数一般按名称排序后拼接,再做 SHA-1 哈希得到签名值。很多人反复签不过,往往不是算法写错,而是 URL 不一致,或者 ticket 已经过期。

前端部分相对直接。在页面里引入微信官方 JS-SDK 文件,然后用后端返回的 AppID、timestamp、nonceStr 和 signature 调用 wx.config。除了注入签名信息,还要在 jsApiList 里声明 onMenuShareTimeline、onMenuShareAppMessage 等接口,否则后面调用会被拒绝。调试阶段可以把 debug 打开,配置出错时微信会在页面里直接弹出提示。配置成功后 wx.ready 会触发,配置失败则 wx.error 会收到错误信息,多数是签名错误或域名不匹配。



真正设置分享内容要放在 wx.ready 之后。分享到朋友圈用 wx.onMenuShareTimeline,分享给好友用 wx.onMenuShareAppMessage。它们都可以设置标题、链接和图标,分享给好友时还可以额外加一段描述。如果你的 JS-SDK 版本较新,也可以改用 updateTimelineShareData 和 updateAppMessageShareData,思路基本一样,只是接口名不同。设置时链接最好写完整绝对地址,避免相对路径导致跳转异常;图标尽量用清晰的正方形图片,压缩后不容易发虚。

微信开发者工具可以帮上一部分忙,但分享卡片的最终效果还是建议在真机上点开右上角菜单验证。服务端的 access_token 和 jsapi_ticket 最好集中管理,避免多个请求同时刷新互相覆盖。实际开发中,大部分分享失败都集中在域名、IP 白名单和签名 URL 这三处。先把这些对齐,再上真机验证,一般就能稳定显示了。