2019-04-30 有关微信分享 --nunjucks框架

本文主要发送朋友和朋友圈两种

1.创建share.js文件:

function shareJs(jssdk, options) {
  wx.config({
    debug: false, //是否打开调试模式
    appId: jssdk.appId,
    timestamp: parseInt(jssdk.timestamp),
    nonceStr: jssdk.nonceStr,
    signature: jssdk.signature,
    jsApiList: [
      'onMenuShareTimeline',
      'onMenuShareAppMessage'
    ]
  });
  var defaults = {
    title: '分享的标题',
    desc: '分享的描述',
    link: location.href, // 分享页面地址,不能为空
    imgUrl: 'https://tup.iheima.com/sport.png', // 分享是封面图片,不能为空
    success: function () {}, // 分享成功触发
    cancel: function () {} // 分享取消触发,需要时可以调用
  }
  options = Object.assign({}, defaults, options);
  wx.ready(function () {
    var thatopts = options;
    wx.onMenuShareTimeline({
      title: thatopts.title, // 分享标题
      desc: thatopts.desc, // 分享描述
      link: thatopts.link, // 分享链接
      imgUrl: thatopts.imgUrl, // 分享图标
      success: function () {
        // alert("成功");
      },
      cancel: function () {
        // alert("失败")
      }
    });
    wx.onMenuShareAppMessage({
      title: thatopts.title, // 分享标题
      desc: thatopts.desc, // 分享描述
      link: thatopts.link, // 分享链接
      imgUrl: thatopts.imgUrl, // 分享图标
      success: function () {
        // alert("成功");
      },
      cancel: function () {
        // alert("失败")
      }
    });
  });
}

2.页面处理

引入文件:




// 不需要拼接地址的地方
let jssdk = {{wechat.data|stringify|safe}};
// 准备好要传入到utils.js文件中的参数。
let optionData = {
    title: '{{result.title}}',
    desc: '{{webdiy.name}}',
     link: '{{ shareurl}}',
    imgUrl: 'https:{{webdiy.wechat_service_qrcode}}'
};
shareJs(jssdk, optionData);

3.服务端处理协议

controller出了一些问题,在测试环境始终无法识别https
暂采用以下方法:

    let xHttpsProxyHost = ctx.request.header['x-https-proxy-host']
    const protocol = xHttpsProxyHost ? 'https' : 'http';

为避免二次分享问题:

//进入时判断带有后缀则跳转
var link = window.location.href.split("?")[0];
if(link !== window.location.href)
{
  window.location.href = link;
}

你可能感兴趣的:(2019-04-30 有关微信分享 --nunjucks框架)