修改微信分享内容教程
发布于 5 年前 作者 ichang 4768 次浏览 来自 分享

一、背景

在移动端业务开发的中,很多时候会进行h5页面的分享操作,但是原生的微信分享效果并不能满足我们业务的需求,如下图:

我们可以看的原生的分享描述是一个页面链接,分享图标也是原生的一个分享图标,这并不是我们实际业务需要的效果。我们真正想要的效果是,分享标题可以自定义、分享内容可以自定义、分享图标可以自定义,如下图:

如何实现分享信息自定义?不要离开,继续往下看。

二、微信JS-SDK使用步骤

自定义分享信息,我们需要借助微信JS-SDK进行开发。微信JS-SDK接入步骤如下:

步骤一:绑定域名

先登录微信公众平台进入“公众号设置”的“功能设置”里填写“JS接口安全域名”。
备注:登录后可在“开发者中心”查看对应的接口权限。
1、打开微信公众平台,输入账号密码,登录后台。

2、找到【公众号设置】并点击。

3、点击【功能设置】。

4、找到【JS接口安全域名】,点击旁边的【设置】。

5、点击下载这个文件,然后上传到服务器。如果在修改业务域名的时候已经上传过这个文件了,就跳过这步操作。

6、在下面,输入要修改的域名,点击【保存】即可。

步骤二:引入JS文件

在需要调用JS接口的页面引入如下JS文件,(支持https):http://res.wx.qq.com/open/js/jweixin-1.4.0.js
如需进一步提升服务稳定性,当上述资源不可访问时,可改访问:
http://res2.wx.qq.com/open/js/jweixin-1.4.0.js (支持https)。
备注:支持使用 AMD/CMD 标准模块加载方法加载

步骤三:通过config接口注入权限验证配置

所有需要使用JS-SDK的页面必须先注入配置信息,否则将无法调用(同一个url仅需调用一次,对于变化url的SPA的web app可在每次url变化时进行调用,目前Android微信客户端不支持pushState的H5新特性,所以使用pushState来实现web app的页面会导致签名失败,此问题会在Android6.2中修复)。

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

签名算法见:
https://developers.weixin.qq.com/doc/offiaccount/OA_Web_Apps/JS-SDK.html#62
所有JS接口列表见:https://developers.weixin.qq.com/doc/offiaccount/OA_Web_Apps/JS-SDK.html#63

步骤四:通过ready接口处理成功验证

wx.ready(function(){
// config信息验证后会执行ready方法,所有接口调用都必须在config接口获得结果之后,config是一个客户端的异步操作,所以如果需要在页面加载时就调用相关接口,则须把相关接口放在ready函数中调用来确保正确执行。对于用户触发时才调用的接口,则可以直接调用,不需要放在ready函数中。
});

步骤五:通过error接口处理失败验证

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

ok,到了这里我们就可以去编写代码了,通过代码来自定义分信息。

三、具体例子说明

1、引入jweixin-1.4.0.js

<script src="http://res.wx.qq.com/open/js/jweixin-1.4.0.js"></script>

2、分享页具体实现代码

$(function(){
  wx.config({
    debug: false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
    appId: '<%=wxAppID%>', // 必填,公众号的唯一标识
    timestamp: '<%=timestamp%>', // 必填,生成签名的时间戳
    nonceStr: '<%=noncestr%>', // 必填,生成签名的随机串--后端用小写  注意
    signature: '<%=signature%>',// 必填,签名,见附录1
    jsApiList: ['onMenuShareTimeline', 'onMenuShareAppMessage', 'onMenuShareQQ', 'onMenuShareWeibo', 'onMenuShareQZone'], // 必填,需要使用的JS接口列表,所有JS接口列表见附录2
  });
  wx.ready(function() {
    // config信息验证后会执行ready方法,所有接口调用都必须在config接口获得结果之后,config是一个客户端的异步操作,所以如果需要在页面加载时就调用相关接口,则须把相关接口放在ready函数中调用来确保正确执行。对于用户触发时才调用的接口,则可以直接调用,不需要放在ready函数中。
    console.log('weixin 验证成功');
    // 分享到朋友圈
    wx.onMenuShareTimeline({
      title: '运营咸鱼拯救计划', // 分享标题
      link: '<%=recallUrl%>', // 分享链接,该链接域名或路径必须与当前页面对应的公众号JS安全域名一致
      imgUrl: 'http:<%=imgPre%>logo.png', // 分享图标
      success: function() {
      // 用户确认分享后执行的回调函数
      },
      cancel: function() {
      // 用户取消分享后执行的回调函数
      },
    });
	// 分享给朋友
    wx.onMenuShareAppMessage({
      title: '运营咸鱼拯救计划', // 分享标题
      desc: '价值10W元!运营人硬核干货,限量千份免费输送', // 分享描述
      link: '<%=recallUrl%>', // 分享链接,该链接域名或路径必须与当前页面对应的公众号JS安全域名一致
      imgUrl: 'http:<%=imgPre%>logo.png', // 分享图标
      type: '', // 分享类型,music、video或link,不填默认为link
      dataUrl: '', // 如果type是music或video,则要提供数据链接,默认为空
      success: function() {
      // 用户确认分享后执行的回调函数
      },
      cancel: function() {
      // 用户取消分享后执行的回调函数
      },
    });
  });

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

四、总结

自定义微信分享的内容信息,简单实现步骤:绑定域名–>引入jweixin-1.4.0.js–>config配置–>ready自定义分享内容。

参考文献:
1、https://developers.weixin.qq.com/doc/offiaccount/OA_Web_Apps/JS-SDK.html#10
2、https://jingyan.baidu.com/article/fa4125acfd4cdc28ac7092f4.html

回到顶部