vue 微信分享带图片,带title,带简介

3 篇文章 0 订阅
2 篇文章 0 订阅

效果图如下

我写在app.vue中

<script>
import sdk from './router/share'; // 引入sdk.

export default {
  name: 'App',
  mounted() {
    /* eslint-disable */
    this.isIPhoneX();
    const url = location.href.split('#')[0];
	 const dataForWeixin = {
      title: '未来尽在平方之间',		// 分享标题
      desc: '重庆壹平方米网络科技有限公司诚邀您在线体验线上购房全流程',						// 分享内容
      linkurl: "http://show.1m2.net/sj", // 分享链接
      img: 'http://show.1m2.net/sj/static/img/share.jpg',				// 分享内容显示的图片(图片必须是正方形的链接)
	   };
    const ua = window.navigator.userAgent.toLowerCase();
    if (ua.match(/MicroMessenger/i) == 'micromessenger') {
      sdk.getJSSDK(url,dataForWeixin); 					//传入sdk.js需要的参数
    } else {
      console.log('不是微信浏览器')
    }
  },
  methods: {
    isIPhoneX() {
      const u = navigator.userAgent;
      /* eslint-disable */
      const isIOS = !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/); // ios终端
      if (isIOS) {
        if (screen.height === 812 && screen.width === 375) {
          // 是iphoneX
          this.$store.commit('iphonex', true);
        } else {
          // 不是iphoneX
          this.$store.commit('iphonex', false);
        }
      }
    },
  },
};
</script>

share.js

import wx from 'weixin-js-sdk'; // 微信sdk依赖
import axios from 'axios';
// 引用全局
/* eslint-disable */
const jsApiList = [
  'checkJsApi',
  'onMenuShareTimeline',
  'onMenuShareAppMessage',
  'hideOptionMenu',
  'showOptionMenu',
  'shareTimeline' //不存在
];

// 要用到微信API
function getJSSDK(url, dataForWeixin) {
  // 调用后台接口换取参数
  axios.get('https://zbhxfapi.1m2.net/weixin/share', {
    params: {
      url,
    },
  }).then((res) => {
    wx.config({
      debug: false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
      appId: res.data.object.appId, // 必填,公众号的唯一标识
      timestamp: res.data.object.timestamp, // 必填,生成签名的时间戳
      nonceStr: res.data.object.nonceStr, // 必填,生成签名的随机串
      signature: res.data.object.signature, // 必填,签名
      jsApiList, // 必填,需要使用的JS接口列表
    });
    wx.ready(() => {
      wx.onMenuShareAppMessage({
        title: dataForWeixin.title,
        desc: dataForWeixin.desc,
        link: dataForWeixin.linkurl,
        imgUrl: dataForWeixin.img,
        trigger: function trigger(res) {},
        success: function success(res) {
          console.log('已分享');
        },
        cancel: function cancel(res) {
          console.log('已取消');
        },
        fail: function fail(res) {
          console.log(JSON.stringify(res), 123456);
        },
      });
      // 2.2 监听“分享到朋友圈”按钮点击、自定义分享内容及分享结果接口
      wx.onMenuShareTimeline({
        title: dataForWeixin.title,
        link: dataForWeixin.linkurl,
        imgUrl: dataForWeixin.img,
        trigger: function trigger(res) {
          // alert('用户点击分享到朋友圈');
        },
        success: function success(res) {
          // alert('已分享');
        },
        cancel: function cancel(res) {
          // alert('已取消');
        },
        fail: function fail(res) {
          alert(JSON.stringify(res));
        },
      });
      // 2.3 监听“分享到QQ”按钮点击、自定义分享内容及分享结果接口
      wx.onMenuShareQQ({
        title: dataForWeixin.title,
        desc: dataForWeixin.desc,
        link: dataForWeixin.linkurl,
        imgUrl: dataForWeixin.img,
        trigger: function trigger(res) {
          // alert('用户点击分享到QQ');
        },
        complete: function complete(res) {
          alert(JSON.stringify(res));
        },
        success: function success(res) {
          // alert('已分享');
        },
        cancel: function cancel(res) {
          // alert('已取消');
        },
        fail: function fail(res) {
          // alert(JSON.stringify(res));
        },
      });
      // 2.4 监听“分享到微博”按钮点击、自定义分享内容及分享结果接口
      wx.onMenuShareWeibo({
        title: dataForWeixin.title,
        desc: dataForWeixin.desc,
        link: dataForWeixin.linkurl,
        imgUrl: dataForWeixin.img,
        trigger: function trigger(res) {
          // alert('用户点击分享到微博');
        },
        complete: function complete(res) {
          // alert(JSON.stringify(res));
        },
        success: function success(res) {
          // alert('已分享');
        },
        cancel: function cancel(res) {
          // alert('已取消');
        },
        fail: function fail(res) {
          // alert(JSON.stringify(res));
          console.log(JSON.stringify(res));
        },
      });
    });
    wx.error((res) => {
      console.log(`${JSON.stringify(res)}微信验证失败`, 456);
      // alert(JSON.stringify(res)+"微信验证失败");
    });
  });
}
export default {
  // 获取JSSDK
  getJSSDK,
};

另外还需要在微信公众号里面设置

  •  

  • JS接口安全域名 点击设置 将下图二的文件下载下来放到对应的服务器上即可

 

注意点:

分享内容显示的图片(图片必须是正方形的链接) 尽量是线上链接(本地的话打包可能会出现不显示的问题)

 

 

其实很简单,只是第一次不会,走了很多坑!尽量填坑中

Vue中实现微信分享链接需要以下步骤: 1. 首先,你需要在微信开放平台上注册一个公众号,并获取到对应的AppID。 2. 在Vue项目的入口文件中引入微信JavaScript SDK,可以通过使用`<script>`标签直接引入,或者通过npm安装相关的包。 3. 在需要分享的页面中,可以在`created`或`mounted`钩子中调用微信提供的API,获取当前页面的URL,并配置微信分享所需的参数。例如: ```javascript import wx from 'weixin-js-sdk'; export default { mounted() { this.getWechatConfig(); }, methods: { getWechatConfig() { // 发起请求,获取后端签名 axios.get('/api/getWechatConfig', { params: { url: window.location.href.split('#')[0] } }).then(response => { const { appId, timestamp, nonceStr, signature } = response.data; // 配置微信分享参数 wx.config({ debug: false, // 开启调试模式 appId: appId, timestamp: timestamp, nonceStr: nonceStr, signature: signature, jsApiList: ['onMenuShareAppMessage', 'onMenuShareTimeline'] // 需要使用的API列表 }); wx.ready(() => { // 配置分享给朋友 wx.onMenuShareAppMessage({ title: '分享标题', desc: '分享描述', link: window.location.href, imgUrl: '分享图片链接', success: () => {}, cancel: () => {} }); // 配置分享到朋友圈 wx.onMenuShareTimeline({ title: '分享标题', link: window.location.href, imgUrl: '分享图片链接', success: () => {}, cancel: () => {} }); }); }).catch(error => { console.error(error); }); } } } ``` 4. 最后,通过后端接口获取微信配置信息,其中`url`参数需要替换成当前页面的URL,然后将获取到的配置信息返回给前端。在前端通过微信提供的`wx.config()`方法进行配置,然后在`wx.ready()`方法中配置分享给朋友和分享到朋友圈的行为。 这样,在Vue中实现微信分享链接的功能就完成了。当用户访问分享出去的链接时,会根据配置信息弹出微信分享的对话框,用户可以选择分享给好友或分享到朋友圈。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值