微信分享标题描述都正确,就链接出了问题?

发布于 2022-09-06 04:48:05 字数 2366 浏览 26 评论 0

let data;

async function onShare(shareTitle = '标题', description = '描述', imgUrl = 'http://f.hiphotos.baidu.com/image/pic/item/38dbb6fd5266d016c4faadfb9d2bd40734fa3505.jpg') {
  data = data || (await getSign()).data.retdata;    //此处是获取 signature, nonceStr, timestamp的接口,若已获取到了那就不再请求接口

  wx.config({
    debug: false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
    appId: w.appid, // 必填,公众号的唯一标识
    timestamp: data.timestamp,   // 必填,生成签名的时间戳
    nonceStr: data.nonceStr,    // 必填,生成签名的随机串
    signature: data.signature,   // 必填,签名,见附录1
    jsApiList: ['onMenuShareTimeline', 'onMenuShareAppMessage'],  // 必填,需要使用的JS接口列表,所有JS接口列表见附录2
  });

  wx.ready(() => {
    let l = window.location;
    let link = `${l.origin}${l.pathname}${l.hash}`;   // 分享的时候去除url中?部分

    if (shareTitle.length >= 20) {
      shareTitle = `${shareTitle.slice(0, 20)}...`;
    }

    let title = shareTitle;

    wx.onMenuShareTimeline({
      title,             // 分享标题
      link,              // 分享链接,该链接域名或路径必须与当前页面对应的公众号JS安全域名一致
      imgUrl,            // 分享图标
      type: 'link', // 分享类型,music、video或link,不填默认为link
      dataUrl: '', // 如果type是music或video,则要提供数据链接,默认为空
      success() {
        // 用户确认分享后执行的回调函数
      },
      cancel() {
        // 用户取消分享后执行的回调函数
      },
    });

    wx.onMenuShareAppMessage({
      title, // 分享标题
      desc: description, // 分享描述
      link, // 分享链接,该链接域名或路径必须与当前页面对应的公众号JS安全域名一致
      imgUrl, // 分享图标
      type: 'link', // 分享类型,music、video或link,不填默认为link
      dataUrl: '', // 如果type是music或video,则要提供数据链接,默认为空
      success() {
        // 用户确认分享后执行的回调函数
      },
      cancel() {
      },
    });
  });

  wx.error(function (res) {
    // config信息验证失败会执行error函数,如签名过期导致验证失败,具体错误信息可以打开config的debug模式查看,也可以在返回的res参数中查看,对于SPA可以在这里更新签名。
    window.popupTips.show(res.errMsg);
  });
}

首先说明,项目是SPA
以上是调用微信jssdk的函数,在每次路由切换的时候都会调用onShare

问题

为什么有的时候分享成功了,标题、描述、图片都正确,就单单链接不正确呢?

举个栗子

现在项目有2个页面#/home#/info
#/info调用onShare,然后用户分享给了别人。 但是第二者进去就直接进去#/home了....
分享链接的代码

let l = window.location;
let link = `${l.origin}${l.pathname}${l.hash}`;   // 分享的时候去除url中?部分

求老司机指点_(:з」∠)_

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

妄司 2022-09-13 04:48:05

您好 现在这个问题有解决方案了么?

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文