微信&QQ二次分享

二次分享: 用户打开网页之后点击右上角…选择分享给好友或者分享到朋友圈的过程。

一、展示样例

开发网页的时候涉及到微信二次分享,需要在朋友圈显示一些数据,如下图所示:

需要显示:标题、描述、小图像、跳转链接
我们可以调用微信的API设置,但是也不能随意设置,需要一切签名数据以保证跟踪防止网络出现不良信息无法追责;

二、微信具体实现

在h5端可以使用jssdk去调用,这里查看官方文档
下面代码中用到的:timestamp、nonceStr、signature 都是在接口里面获取的。

wx.config({
  debug: false,
  appId:result.data.appid,
  timestamp:result.data.timestamp,
  nonceStr: result.data.nonceStr,
  signature:result.data.signature,
  jsApiList: [
    'onMenuShareTimeline',
    'onMenuShareAppMessage',
    'onMenuShareQQ',
    'onMenuShareWeibo'
  ]
});

配置好上面的内容之后,我们就可以设置分享的信息了,这些信息包含了:标题、描述、小图像、跳转链接。具体实现可参考如下:

wx.ready(function () {
  var shareObject = {
    title: options.title,
    desc: options.desc,
    link: options.link,
    imgUrl: options.imgUrl,
    success: function() {
      if (options.success) {
        options.success();
      }
    }
  };
  // 分享给朋友
  wx.onMenuShareAppMessage(shareObject);
  // 分享到朋友圈
  wx.onMenuShareTimeline(shareObject);
  // 分享到QQ
  wx.onMenuShareQQ(shareObject);
  // 分享到腾讯微博
  wx.onMenuShareWeibo(shareObject);
})

注意:
1、调用接口的时候需要在后台配置IP白名单(可以设置为服务器和本地调试的名单,如果没有设置会报错的)
2、需要微信公众号的appid和secret 授权得到access_token(这个两个值可以在微信的公众号后台查看)

下面涉及到两个微信的接口:
1、获取access_token
GET https://api.weixin.qq.com/cgi-bin/token
query appid=xxxx&secret=xxxxxxxxx&grant_type=client_credential

2、获取ticket
GET https://api.weixin.qq.com/cgi-bin/ticket/getticket
query access_token=xxxxxxx&type=jsapi

获取到了 加密 的签名
https://developers.weixin.qq.com/doc/offiaccount/OA_Web_Apps/JS-SDK.html#62

参考文献:
https://developers.weixin.qq.com/doc/offiaccount/OA_Web_Apps/JS-SDK.html#54

其他渠道的二次分享有些是基于meta标签配置的;

三、QQ具体实现

我们需要在html中加入下面的,让QQ内置浏览器在分享的时候读取

<title>好友默契大考验!</title>
<meta name="title" content="好友默契大考验!">
<meta itemprop="name" content="好友默契大考验!">
<meta itemprop="description" content="好友默契大考验,这段是描述">
<meta itemprop="image" content="缩略图">

在QQ中,上述的[[常见的meta以及输入标签|meta标签]]甚至可以使用js在页面中生成,这对于多语言场景需求的页面比较实用;

$("meta[name='description']").attr('content',opinionParam.employeename+"的观点");
$("meta[name='title']").attr('content',opinionParam.title);
$("title").html(opinionParam.title);
$("meta[itemprop='name']").attr('content',opinionParam.title);  
$("meta[name='image']").attr('src',"http://zmall.hazq.com:8295/m/tgwd/images/huiying.png"); 
$("meta[name='image']").attr('content',"http://zmall.hazq.com:8295/m/tgwd/images/huiying.png");

参考:https://blog.csdn.net/qq_41725450/article/details/100891853

留下回复