H5微信分享 朋友 分享给朋友圈 vue 踩坑实战,附注意事项 及 解决方案

最近有一个微信分享的功能,恰逢疫情期间远程办公,然后家里的笔记本比较拉闸本地环境不完善,然后远程办公只能推代码到测试环境调试,博主也是比较难受,日渐憔悴,一周没对接好的问题,好在到了公司一下午就调试好了,废话不多说了

分享成功失败的对比微信截图如下
在这里插入图片描述
在这之前
主要代码

 getShareInfo (tit, fxUrl) {//如果分享的内容会根据情况变化,那么这里可以传入分享标题及url
      let urlPath = location.href.split("#")[0] || "";
      var data = {//请求参数
        url: encodeURIComponent(urlPath),  // keyi
      }
      getWxJSSDKConfig(data)//这里我写了一个公用的接口请求js,这里正常axios请求就可以,只要拿到数据都可以
        .then(res => {
          res.data.debug = true
          console.log("jsapi_ticket", res.data)
          localStorage.setItem("jsapi_ticket", res.data);
          window.wx.config({
            debug: false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
            appId: res.data.appId, // 必填,公众号的唯一标识
            timestamp: res.data.timestamp, // 必填,生成签名的时间戳
            nonceStr: res.data.nonceStr, // 必填,生成签名的随机串
            signature: res.data.signature, // 必填,签名,见附录1
            jsApiList: res.data.jsApiList // 必填,需要使用的JS接口列表,所有JS接口列表见附录2
            // jsApiList: ['onMenuShareTimeline', 'onMenuShareAppMessage'] // 必填,需要使用的JS接口列表,所有JS接口列表见附录2
          })
          let urlPath = this.url.split("#")[0] || "";
          window.wx.ready(() => {
            // alert("准备完毕,加载方法");
            //分享到朋友圈
            window.wx.updateTimelineShareData({
              title: '共克疫情,四喜在线服务',   // 分享时的标题
              link: urlPath,     // 分享时的链接 // keyi
              imgUrl: this.$CDN('/all/activity/41c521dede10bd48a37eb1b2bd6b600.jpg'),   // 分享时的图标
              success: function () {
                console.log("分享成功");
              },
              cancel: function () {
                console.log("取消分享");
              }
            });
            //分享给朋友
            window.wx.updateAppMessageShareData({
              title: '共克疫情,四喜在线服务',
              desc: '千人专业电商运营公司,深耕行业12年,一键免费制定电商解决方案。',
              link: urlPath, // keyi
              imgUrl: this.$CDN('/all/activity/41c521dede10bd48a37eb1b2bd6b600.jpg'),
              type: '',
              dataUrl: '',
              success: function (n) {
                console.log("分享成功", n);
              },
              complete: function (n) {
                console.log(n);
              }
            });
          })
        })
    },

在这之前
1.
2020年3月16日10:27:41 这个时间节点的技术要求,这个功能必须依赖 微信公众号
2.
配置api以及js域名白名单
3.
验签 ,博主这里是前端调接口,后端验签,常规操作是这样,但是前端也可以自己去验签,不过这个比较少见吧,视自己情况,前端验签网上应该有不少教程,这里就不多阐述了。
4. 验签传的url切记let urlPath = location.href.split("#")[0] || "";不管你的项目有没有#,给我加上就完事了 请求参数记得encodeURIComponent一下var data = {//请求参数 url: encodeURIComponent(urlPath), // keyi }
5.updateTimelineShareData很关键,不要给我用什么 onmune的方法,要废弃了, jsdk版本1.4.0给我装1.6.0 ,npm装不上的,index.html 用script标签引用,像博主这样window调用,有问题的私聊我。这里let urlPath = this.url.split("#")[0] || "";加上let urlPath = this.url.split("#")[0] || ""; window.wx.ready(() => { // alert("准备完毕,加载方法"); //分享到朋友圈 window.wx.updateTimelineShareData({ title: '共克疫情,四喜在线服务', // 分享时的标题 link: urlPath, // 分享时的链接 // keyi imgUrl: this.$CDN('/all/activity/41c521dede10bd48a37eb1b2bd6b600.jpg'), // 分享时的图标 success: function () { console.log("分享成功"); }, cancel: function () { console.log("取消分享"); } }); //分享给朋友 window.wx.updateAppMessageShareData({ title: '共克疫情,四喜在线服务', desc: '千人专业电商运营公司,深耕行业12年,一键免费制定电商解决方案。', link: urlPath, // keyi imgUrl: this.$CDN('/all/activity/41c521dede10bd48a37eb1b2bd6b600.jpg'), type: '', dataUrl: '', success: function (n) { console.log("分享成功", n); }, complete: function (n) { console.log(n); } });
这样玩。
正常流程走下来,如果你操作没问题基本就分享成功了。
然后下面说几个博主踩的坑,仅供借鉴

不成功的又不知道错在哪里的用微信开发者工具给我调试
1.
pc端微信分享成功然后手机不行的,统统给我用jsdk1.6.0的版本
2.
63004几个常见的错误
js和api域名白名单一定要配置
然后 后端的验签有专门网站可以验证,其他步骤没错就去调试下这个
3.
出现url报错的就看下我上面的。#去没去 加密加没加

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
要在Vue H5中调用微信分享,首先需要引入微信官方的JS-SDK库。在Vue项目的index.html文件中,可以在<head>标签内添加如下代码: ```html <script src="https://res.wx.qq.com/open/js/jweixin-1.6.0.js"></script> ``` 然后,在Vue组件的created生命周期钩子函数中,使用Vue的axios或者其他网络请求库向后端请求获取微信配置信息。 ```javascript created() { this.fetchWechatConfig(); }, methods: { async fetchWechatConfig() { const response = await axios.get('/api/wechat/config'); // 向后端请求微信配置信息 const { appId, timestamp, nonceStr, signature } = response.data; // 将配置信息存储到全局变量中 this.$store.commit('setWechatConfig', { appId, timestamp, nonceStr, signature }); this.initWechatSDK(); }, initWechatSDK() { const { appId, timestamp, nonceStr, signature } = this.$store.state.wechatConfig; wx.config({ appId, timestamp, nonceStr, signature, jsApiList: ['onMenuShareTimeline', 'onMenuShareAppMessage'], // 配置需要使用的微信API }); // 进行微信SDK的初始化 wx.ready(() => { this.shareToWechat(); }); }, shareToWechat() { const shareData = { title: '分享标题', link: '分享链接', imgUrl: '分享图片链接', desc: '分享描述', }; // 配置分享的具体内容 wx.onMenuShareTimeline(shareData); // 分享朋友圈 wx.onMenuShareAppMessage(shareData); // 分享给好友 }, }, ``` 上述代码中,我们通过axios库向后端请求了微信配置信息,并将其存储到Vuex的全局状态中。然后,我们使用微信JS-SDK中的`wx.config`方法进行微信验证和初始化配置。一旦初始化成功,`wx.ready`回调函数将会被触发,我们在该函数中调用`shareToWechat`方法来配置分享的具体内容。 在`shareData`对象中,我们可以自定义分享的标题、链接、图片和描述等信息,然后使用`wx.onMenuShareTimeline`方法配置分享朋友圈的内容,使用`wx.onMenuShareAppMessage`方法配置分享给好友的内容。 最后,我们可以在Vue组件中调用`shareToWechat`方法来触发微信分享。 注意:在实际开发中,需要根据微信的API文档和后端提供的接口来进行相应的调整和配置。以上代码仅为示例,具体实现方式可能会有所不同。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

晴天有点孤单

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值