解决微信二次分享的问题

231 阅读1分钟
import wx from 'jweixin-1.6.0';
import { getOfficialAccountSignature } from '@/request/admin/weChat';

type ParamInfo = {
  url: string;
  title: string;
  desc: string;
  imgUrl: string;
};

/**
 * 微信二次分享设置title和描述
 * @param url 网页地址
 * @param title 网页名称
 * @param desc 网页描述
 * @param imgUrl 网页图片地址
 */
export function shareWechat(param: ParamInfo) {
  const { url, title, desc, imgUrl } = param;
  // 获取微信相关配置
  getOfficialAccountSignature({ url }).then((wechatRes) => {
    const { appId, timestamp, nonceStr, signature } = wechatRes;
    const imgUrlOSS = `${imgUrl}?x-oss-process=image/resize,m_fill,h_100,w_100`;

    wx.config({
      debug: false, // 开启调试模式,调用的所有 api 的返回值会在客户端 alert 出来,若要查看传入的参数,可以在 pc 端打开,参数信息会通过 log 打出,仅在 pc 端时才会打印。
      appId, // 必填,公众号的唯一标识
      timestamp, // 必填,生成签名的时间戳
      nonceStr, // 必填,生成签名的随机串
      signature, // 必填,签名
      jsApiList: ['updateAppMessageShareData', 'updateTimelineShareData'] // 必填,需要使用的 JS 接口列表
    });
    wx.ready(function () {
      wx.updateAppMessageShareData({
        title, // 分享标题
        desc, // 分享描述
        link: url, // 分享链接,该链接域名或路径必须与当前页面对应的公众号 JS 安全域名一致
        imgUrl: imgUrlOSS // 分享图标
      });
      wx.updateTimelineShareData({
        title, // 分享标题
        link: url, // 分享链接,该链接域名或路径必须与当前页面对应的公众号 JS 安全域名一致
        imgUrl: imgUrlOSS // 分享图标
      });
    });
  });
}