nuxt微信分享实战

 前提工作:公众号账号需要认证并且配置域名,例如域名为http://www.baidu.com,配置应该为baidu.com

1.在plugins目录下新建一个wxShare.js文件

import Vue from 'vue'
import wx from 'weixin-js-sdk'
Vue.prototype.$wechat = wx

export default () => {
  // 这个url必须传当前页面的url,不然会一直报签名失效
  Vue.prototype.wxShare = async function (shareData, url) {
    // 获取微信公众号签名数据
    let params = {
      URL: url
    }
    const { result } = await this.$indexApi.getWXShare(params);
    // if (result) {
    // $axios.post('/api/wx/base/signature', { url }).then(({ data }) => {
    // const wxData = data.data
    // 注意接口返回字段大小写正确
    // wx.checkJsApi({
    //   jsApiList: ['updateAppMessageShareData', 'onMenuShareAppMessage', 'updateTimelineShareData'], // 需要检测的JS接口列表,所有JS接口列表见附录2,
    //   success: function (res) {
    //     console.log('11111111111', res);
    //     // 以键值对的形式返回,可用的api值true,不可用为false
    //     // 如:{"checkResult":{"chooseImage":true},"errMsg":"checkJsApi:ok"}
    //   }
    // });
    wx.config({
      debug: false,
      appId: result.appId,
      timestamp: result.timestamp,
      nonceStr: result.nonceStr,
      signature: result.signature,
      jsApiList: ['updateAppMessageShareData', 'onMenuShareAppMessage', 'updateTimelineShareData']
    });

    setTimeout(() => {
      wx.ready(() => {
        console.log('vvvv', wx.updateAppMessageShareData);
        // 自定义“分享给朋友”及“分享到QQ”按钮的分享内容(1.4.0)
        if (wx.updateAppMessageShareData) {
          wx.updateAppMessageShareData({
            // jsApiList: ['updateAppMessageShareData', 'onMenuShareAppMessage'],
            title: shareData.title,
            desc: shareData.desc,
            link: shareData.link,
            imgUrl: shareData.imgUrl,
            success(res) {
              console.log('成功', res);

            },
            cancel(err) {
              console.log("失败2", err);
            }
          })
        } else {
          wx.onMenuShareAppMessage({
            // jsApiList: ['updateAppMessageShareData', 'onMenuShareAppMessage'],
            title: shareData.title,
            desc: shareData.desc,
            link: shareData.link,
            imgUrl: shareData.imgUrl,
            success() {
              console.log('成功2', res);
            },
            cancel(err) {
              console.log('失败2', err);
            }
          })
        }
        // 自定义“分享到朋友圈”及“分享到QQ空间”按钮的分享内容(1.4.0)
        wx.updateTimelineShareData({
          title: shareData.title,
          desc: shareData.desc,
          link: shareData.link,
          imgUrl: shareData.imgUrl,
          success() {
          },
          cancel() {
          }
        })
      })
    }, 300)


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

    // })
  }
}

2.在nuxt.config.js plugins里面配置

{ src: '~/plugins/wxShare.js', ssr: false },

在页面初始化

this.wxShare(
        {
          title: "标题",
          desc: "测试",
          link: window.location.href,
          imgUrl: "",
        },
        window.location.href
      );

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值