网页H5分享到微信好友/朋友圈功能以及自定义分享卡片link、标题遇到的坑

利用微信SDK在网页调起分享并自定义分享link与标题、描述

一、第一步

首先需要在公众号配置您想要分享的网页域名 白名单
如下图所示,完成设置
在这里插入图片描述

二、第二步

安装微信提供的JS-SDK包

npm install weixin-js-sdk -S

随便找个页面引入在控制台打印,出现下图信息,引入成功
在这里插入图片描述

三、第三步

在这里插入图片描述
上面是微信文档原话

四、第四步

新建tools.js文件

// Vue.js 项目正常引入即可
// JS-SDK
var wx = require('weixin-js-sdk');


/**
 * 验证配置(由后端接口提供配置验证的必要参数)
 * @description appId/timestamp/nonceStr/signature等
 * @param {Object} data - 后端必要参数
 * @return void
 */
function config(data) {
	// 手动注入配置
	wx.config({
		debug: false, // 开启调试模式,调用的所有 api 的返回值会在客户端 alert 出来,若要查看传入的参数,可以在 pc 端打开,参数信息会通过 log 打出,仅在 pc 端时才会打印。
		appId: data.appId, // 必填,公众号的唯一标识
		timestamp: data.timestamp, // 必填,生成签名的时间戳
		nonceStr: data.nonceStr, // 必填,生成签名的随机串
		signature: data.signature,// 必填,签名
		jsApiList: ['updateAppMessageShareData', 'updateTimelineShareData'] // 必填,需要使用的 JS 接口列表
	})

    // 或者由后端返回全部的参数 ↓↓↓
    // wx.config(data)
}


/**
 * 设置自定义分享配置(必须在用户可能点击分享按钮前就调用,也就是说提前设置好才行)
 * @description 详见文档: https://developers.weixin.qq.com/doc/offiaccount/OA_Web_Apps/JS-SDK.html#111
 * @param {Object} appMessage - "分享给朋友/分享到QQ" 配置
 * @param {Object} timeLine - "分享到朋友圈/分享到QQ空间" 配置
 * @return void
 */
function wxShare(appMessage = {}, timeLine = {}) {
	wx.ready(() => {
		// "分享给朋友/分享到QQ"
		wx.updateAppMessageShareData(appMessage)
		// "分享到朋友圈/分享到QQ空间"
		wx.updateTimelineShareData(timeLine)
	})
}


export default {
    config: config,
    wxShare: wxShare
}

五、第五步

在要自定义分享配置的页面引入tools.js文件,并注入配置信息,调用

<template>
  <div>
    <h1>微信开发者工具中打开进行测试</h1>
  </div>
</template>

<script>
// 注意路径!!!
import $tools from '@/assets/tools.js'
export default {
  
  data() {
    return {
      // 分享标题、描述、图标等数据(根据您的需求自定义即可)
      info: {
        title: '自定义标题',
        desc: '自定义描述',
        cover: 'https://xxxxxxx/xxxxx.png',
        // ...
      }
    }
  },

  mounted() {
    // 一键开启页面分享功能
    this.getConfig()
  },

  methods: {

    /**
     * 获取配置信息(尽量在mounted()钩子中执行)
     * @description 拿到后端数据后,传入封装好的函数中进行验证
     * @return void
     */
    getConfig() {
      // 请自行替换接口请求方式与地址!!
      this.$http(`XXXX`).then(res => {
        // console.log('配置信息', res.data)
        // 1: 注入并验证信息
        $tools.config(res.data)
        // 2: 调用分享功能
        this.setShare()
      })
    },

    /**
     * 获取配置信息(尽量在mounted()钩子中执行)
     * @description 拿到后端数据后,传入封装好的函数中进行验证
     * @return void
     */
    setShare() {
      // 分享标题、描述、图标等数据(根据您的需求自定义即可)
      const data = this.info;

      // "分享给朋友/分享到QQ"
      const appMessage = {
          title: data.title, //分享标题
          desc: data.desc, //分享描述
          link: location.href, //分享链接,默认当前页面(必须对应JS安全域名)
          imgUrl: data.cover, //分享图标
          success: () => {//调用成功
            // alert('成功')
          },
          fail: (err) => {//调用失败
            alert(JSON.stringify(err))
          }
      }

      // "分享到朋友圈/分享到QQ空间"
      const timeLine = {
          title: data.title, //分享标题
          link: location.href, //分享链接,默认当前页面(必须对应JS安全域名)
          imgUrl: data.cover, //分享图标
          success: () => {//调用成功
            // alert('成功')
          },
          fail: (err) => {//调用失败
            alert(JSON.stringify(err))
          }
      }

      // 丢入自动设置
      $tools.wxShare(appMessage, timeLine)
    },

  }
}
</script>

<style scoped></style>

在这里插入图片描述

遇到的坑

  1. 确保公众号有权限
  2. 确认传入config的后端接口参数
  3. 在这里插入图片描述
  4. 近期微信做出了调整,必须在公众号底部菜单栏打开才能正常分享,显示自定义的卡片信息
    微信外部链接内容管理规范具
    5.再调后端接口拿验证信息的时候,后端可能会需要你传一个url,
    在这里插入图片描述
    在这里插入图片描述
    一定要是当前网页的url,不让有可能分享失败
encodeURIComponent(location.href.split('#')[0])

如果分享以后,发现小卡片上的链接不是config注入的配置中如ink链接,并且又是在公众号配置过的安全域名,那么可以让后端/运维给你一个转发地址,通过找个转发地址跳转到你想要去的页面

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在小程序中嵌入H5页面后,要实现点击按钮分享微信朋友圈,可以按照以下步骤进行: 1. 在H5页面中添加分享按钮,并绑定点击事件。 2. 在点击事件中,调用小程序提供的JSAPI将分享内容传递给小程序。 3. 在小程序中使用`wx.updateTimelineShareData` API设置分享朋友圈的内容。 以下是一个示例代码: 在H5页面中添加分享按钮,并绑定点击事件: ```html <button onclick="shareToWechat()">分享微信朋友圈</button> <script> function shareToWechat() { // 准备分享内容 var shareData = { title: '分享标题', link: '分享链接', imgUrl: '分享图片链接', }; // 调用小程序JSAPI传递分享内容 WeixinJSBridge.invoke('updateTimelineShareData', shareData); } </script> ``` 在小程序中,需要在页面加载完成后,注册`WeixinJSBridgeReady`事件,等待H5页面调用JSAPI: ```javascript Page({ onLoad: function () { if (typeof WeixinJSBridge === 'undefined') { document.addEventListener('WeixinJSBridgeReady', this.onBridgeReady.bind(this)); } else { this.onBridgeReady(); } }, onBridgeReady: function () { // 设置分享朋友圈的内容 wx.updateTimelineShareData({ title: '分享标题', link: '分享链接', imgUrl: '分享图片链接', success: function () { console.log('分享朋友圈成功'); }, fail: function () { console.error('分享朋友圈失败'); } }); } }) ``` 注意:在小程序中调用JSAPI需要等待`WeixinJSBridgeReady`事件触发,所以需要在`onLoad`方法中注册该事件。 这样就可以在小程序中嵌入H5页面,并且在H5页面中点击按钮分享微信朋友圈了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值