Jsweixin 微信分享工具

jsweixin.js 对微信 JS-SDK 的分享配置进行链式封装,对外入口为 GB.Wxshare()。它负责组织签名参数、分享接口和分享内容,并在微信 SDK 就绪后注册分享能力。

安装与依赖

浏览器直接引入

必须先引入微信官方 JS-SDK,再引入 Gentbo 扩展。

<script src="https://res.wx.qq.com/open/js/jweixin-1.6.0.js"></script>
<script src="https://cloud.m775.net/js/jsweixin.js"></script>

npm 项目

npm i @gentbo/jsweixin

import '@gentbo/jsweixin';

页面还需要从自己的服务端获取当前 URL 对应的微信签名参数。AppSecret 不应写入浏览器代码。

快速开始

将服务端返回的 appId、timestamp、nonceStr 和 signature 写入配置,设置分享内容后调用 run()。

GB.Wxshare()
  .appid(signConfig.appId)
  .timestamp(signConfig.timestamp)
  .nonce(signConfig.nonceStr)
  .sign(signConfig.signature)
  .title('页面标题')
  .desc('页面内容简介')
  .link(location.href)
  .image('https://example.com/share-cover.jpg')
  .success(() => console.log('分享设置成功'))
  .error(error => console.error('微信配置失败:', error))
  .run();

微信签名配置

.debug(enabled = true)启用或关闭微信 JS-SDK 调试模式;只有严格的 true 会启用。
.appid(appId)设置微信公众号或开放平台应用的 appId。
.timestamp(value)设置生成签名时使用的时间戳。
.nonce(value)设置生成签名时使用的随机字符串,对应 nonceStr。
.sign(signature)设置服务端生成的签名。

签名必须与用户当前访问的页面 URL 匹配。单页应用修改路由或 URL 后,通常需要重新获取签名并再次配置。

管理 JS-SDK 接口

Wxshare 默认包含现代与旧版的好友和朋友圈分享接口:updateAppMessageShareData、updateTimelineShareData、onMenuShareAppMessage 和 onMenuShareTimeline。

.api(string)按空格、逗号或分号拆分字符串,并替换当前接口列表。
.api(array)将数组中的接口去重后追加到当前列表。
.addApi(name)追加一个尚未存在的接口。
.removeApi(name)移除指定接口。
.clearApi()清空全部接口。
GB.Wxshare()
  .clearApi()
  .api([
    'updateAppMessageShareData',
    'updateTimelineShareData'
  ])
  .appid(signConfig.appId)
  .timestamp(signConfig.timestamp)
  .nonce(signConfig.nonceStr)
  .sign(signConfig.signature)
  .title('分享标题')
  .link(location.href)
  .image('https://example.com/share.jpg')
  .run();

分享内容与回调

.title(value)设置分享标题。
.desc(value)设置分享描述。
.link(url)设置用户点击分享卡片后打开的地址。
.image(url)设置分享图标的完整网络地址,对应 imgUrl。
.success(callback)设置微信接口的成功回调。
.cancel(callback)设置取消回调;是否触发取决于具体 SDK 接口。
.complete(callback)设置接口完成回调;是否支持取决于具体 SDK 接口。
.error(callback)通过 wx.error() 监听 JS-SDK 配置验证失败,回调参数为微信返回的错误信息。

启动分享配置

.run()调用 wx.config(),并在 wx.ready() 后逐一执行已配置的分享接口。
.start()run() 的兼容入口。

如果微信 JS-SDK 未加载,执行时会立即抛出“微信JS-SDK未加载”错误。当前 SDK 不支持的分享接口会自动跳过,其他可用接口仍会继续注册。签名或权限配置验证失败时,由 error() 注册的回调接收 wx.error() 信息。

使用边界

运行环境仅适用于加载了微信 JS-SDK 的浏览器页面,实际能力还受微信客户端和公众号权限影响。
签名安全签名应由服务端生成;不要在前端保存 AppSecret。
错误监听通过链式 error(callback) 监听 wx.error();建议在生产环境记录 errMsg 和当前签名 URL。
返回值run() 和 start() 用于提交配置,不返回 Promise 或当前实例。