微信二次分享

1
2
引入sdk
<script src="https://xxxx/xxx/jweixin-1.6.0.js"></script>

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
var ctx = window;
 var param = {};
 ctx.__mm_getWeixinSign = function(resp){
   if (resp.ec != 200 && param.debug){
       alert('get weixin sign failed: ' + resp.em);
       return;
   }
   var sign = resp.data.sign;
   // debug,jsApiList,callback
   wx.config({
       debug: param.debug, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
       appId: sign.appid, // 必填,公众号的唯一标识
       timestamp: sign.timestamp , // 必填,生成签名的时间戳
       nonceStr: sign.noncestr, // 必填,生成签名的随机串
       signature: sign.signature,// 必填,签名,见附录1
       jsApiList: param.jsApiList // 必填,需要使用的JS接口列表,所有JS接口列表见附录2
   });
   var _shareObj = param.share;
   if (!_shareObj) return;
   wx.ready(function() {
     var com_share = {
         title: _shareObj.title, // 分享标题
         desc: _shareObj.text,   // 分享描述
         link: _shareObj.url,    // 分享链接
         imgUrl: _shareObj.pic,  // 分享图标
         success: _shareObj.callback,
         cancel: function () {
             // 用户取消分享后执行的回调函数
         }
     };
 
     var mmComWx={
         weixin:'onMenuShareTimeline',// 分享到朋友圈
         weixin_friend:'onMenuShareAppMessage',// 分享给微信朋友
         qq:'onMenuShareQQ',// 分享到QQ
         qzone:'onMenuShareQZone'// 分享到QQ空间
     };
 
     for (var k in mmComWx) {
         if (_shareObj.configs && _shareObj.configs[k]) {
             var share_config = _shareObj.configs[k];
             var tit = (k == 'weixin') ? share_config.text : share_config.title;
             wx[mmComWx[k]]({
                 title: tit, // 分享标题
                 desc: share_config.text,   // 分享描述
                 link: share_config.url,    // 分享链接
                 imgUrl: share_config.pic,  // 分享图标
                 success: share_config.callback,
                 cancel: function () {
                     // 用户取消分享后执行的回调函数
                 }
             });
         }else{
             wx[mmComWx[k]](com_share);
         }
     }
     param.callback && param.callback();
   });
 };
 
 var index = {
   setConfig: function(_param, _callback) {
     var ua = navigator.userAgent.toLowerCase();
     if (ua.match(/MicroMessenger/i) != "micromessenger") {
         return;
     }
     var url = "https://xxx/api/weixin/share?callback=__mm_getWeixinSign&url="+ encodeURIComponent(location.href);
 
     // 创建script标签,设置其属性
     var script = document.createElement('script');
     script.setAttribute('src', url);
     param = _param;
     if (_callback) {
         param.callback = _callback;
     }
     // 把script标签加入head,此时调用开始
     document.getElementsByTagName('head')[0].appendChild(script);
   }
};
 
export const wxShare = () => {
    return index;
}

 

复制代码
//微信二次分享
import {wxShare} from '../components/wxshare/index'
export const initWXShare = () => {
    const title = '',
          text = '',
          pic = '',
          url = location.href;
    const share = wxShare();
    share.setConfig({
      debug: false, // 在生产环境设置为false,在开发环境可以检测是否调用成功
      jsApiList: ['onMenuShareAppMessage','onMenuShareTimeline','updateAppMessageShareData','updateTimelineShareData'],
      share: {
        title: title,//分享标题
        text: text,//分享副标题
        pic: pic,//分享Card中的缩略图
        url: url,//分享链接
        configs: {
            'weixin': {
                title, text, url: `${url}&src=weixin`, pic, share_type: 'web'
            },
            'weixin_friend': { 
                title, text, url: `${url}&src=friend`, pic, share_type: "web"   //类型,可选值为web | image,默认不传为web分享。
            },
            'qzone': { 
                title, text, url: `${url}&src=qzone`, pic, share_type: "web"  // 分享的类型,可选值为web | image,默认不传为web分享。
            },
            'qq': { 
                title, text, url: `${url}&src=qq`, pic, share_type: "web"   // 型,可选值为web | image,默认不传为web分享。
            },
            'sina': { 
                title, text, url: `${url}&src=sina`, pic, share_type: "web"   // 型,可选值为web | image,默认不传为web分享。
            }
        }
      }
    })
}
复制代码

 

posted @   创业男生  阅读(241)  评论(0编辑  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· [AI/GPT/综述] AI Agent的设计模式综述
历史上的今天:
2018-07-04 [转载]常见的移动端H5页面开发遇到的坑和解决办法
点击右上角即可分享
微信分享提示