微信JS-SDK实现自定义分享功能,分享给朋友,分享到朋友圈

微信JS-SDK实现自定义分享功能,分享给朋友,分享到朋友圈

导语:

微信分享在手机右上角的三个点一键分享就ok了,那么对于分享到朋友圈,分享给朋友是怎么实现的呢?对于那种活动分享送流量是怎么定位分享者的呢?而想要将文章发送给朋友又是怎么获取到的朋友列表的呢? 微信JS-SDK是微信公众平台面向网页开发者提供的基于微信内的网页开发工具包。

JSSDK使用步骤

1、绑定域名

先登录微信公众平台进入“公众号设置”的“功能设置”里填写“JS接口安全域名”。

设置js 安全域名在 设置–>公众号设置–>功能设置里边 appid appSercret 在开发–>基本配置里

2、引入js文件

在需要调用JS接口的页面引入如下JS文件http://res.wx.qq.com/open/js/jweixin-1.0.0.js

3、通过config接口注入权限验证配置

在微信公众平台JSSDK说明文档是这样注释的:

wx.config({
    debug: true,//开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
    timestamp: , //必填,生成签名的时间戳  
    nonceStr: '', //必填,生成签名的随机串  
    jsApiList: [] //必填,需要使用的JS接口列表,所有JS接口列表见附录2  
});
4、通过ready接口处理成功验证
wx.ready(function(){  
    //config信息验证后会执行ready方法,所有接口调用都必须在config接口获得结果之后,config是一个客户端的异步操作,所以如果需要在页面加载时就调用相关接口,则须把相关接口放在ready函数中调用来确保正确执行。对于用户触发时才调用的接口,则可以直接调用,不需要放在ready函数中。  
});
5、通过error接口处理失败验证
wx.error(function(res){    
    //config信息验证失败会执行error函数,如签名过期导致验证失败,具体错误信息可以打开configdebug模式查看,也可以在返回的res参数中查看,对于SPA可以在这里更新签名。    
});

分享接口:

1、获取“分享到朋友圈”按钮点击状态及自定义分享内容接口
wx.onMenuShareTimeline({    
    title: '', // 分享标题    
    link: '', // 分享链接    
    imgUrl: '', // 分享图标    
    success: function () {     
        // 用户确认分享后执行的回调函数    
    },    
    cancel: function () {     
        // 用户取消分享后执行的回调函数    
    }    
});
2、获取“分享给朋友”按钮点击状态及自定义分享内容接口
wx.onMenuShareAppMessage({    
    title: '', // 分享标题    
    desc: '', // 分享描述    
    link: '', // 分享链接    
    imgUrl: '', // 分享图标    
    type: '', // 分享类型,music、video或link,不填默认为link    
    dataUrl: '', // 如果type是music或video,则要提供数据链接,默认为空    
    success: function () {     
        // 用户确认分享后执行的回调函数    
    },    
    cancel: function () {     
        // 用户取消分享后执行的回调函数    
    }    
});

页面源码

<script >
    $(function(){
            ajaxConfig();
     }); 
    function ajaxConfig(){
        var url=window.location.href.split('#')[0];  
        url = url.replace(/&/g, '%26'); 
        $.ajax({
            type:"post",
            dataType: "json",
            data:{
                url:url
            },
            url: "getconfig.html",
            success: function(obj){
                //微信注入权限接口
                wx.config({
                  debug: false,
                  appId: obj.appId,
                  timestamp: obj.timestamp,
                  nonceStr: obj.nonceStr,
                  signature: obj.signature,
                  jsApiList: [
                    'onMenuShareAppMessage','onMenuShareTimeline'                   
                  ]
                });
                wx.ready(function(){
                     wx.onMenuShareAppMessage({
                        title: '${pro.wxtitle}', // 分享标题
                        desc: "${pro.wxdesc}", // 分享描述
                        imgUrl: 'http://www.yaoshihang.cn/${pro.imgurl}', 
                        link: window.location.href.split('#')[0],
                        type: 'link' // 分享类型,music、video或link,不填默认为link
                    });

                    wx.onMenuShareTimeline({
                        title: '${pro.wxtitle}', // 分享标题
                        link: window.location.href.split('#')[0], // 分享链接,该链接域名或路径必须与当前页面对应的公众号JS安全域名一致
                    }); 

                    wx.checkJsApi({  
                        jsApiList: [   
                            'onMenuShareAppMessage','onMenuShareTimeline' 
                        ],  
                        success: function (res) {  
                        //alert(res.errMsg);  
                        }  
                    }); 
                });   
                wx.error(function(res){
                    // config信息验证失败会执行error函数,如签名过期导致验证失败,具体错误信息可以打开config的debug模式查看,也可以在返回的res参数中查看,对于SPA可以在这里更新签名。
                    // alert("errorMSG:"+res);
                });
            },
            error:function(){
                //alert("系统请求异常!");
            }
        });
    }
</script>

<script type="text/javascript">
    // 微信分享
    $.ajax({
      async: false,
      cache: false,
      url:url,//获取微信appid等的接口,如果可以直接获取到,则不需要此操作
      type:'GET',
      success:function(data){
        data = JSON.parse(data);
        //console.log(data)
        if(data.status != 1){
            console.log(data.message);
        }else{
          var sign = data.data;
          //alert(sign);
          wx.config({
            "debug": false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
            "appId": sign.appId, // 必填,公众号的唯一标识
            "timestamp": sign.timestamp, // 必填,生成签名的时间戳
            "nonceStr": sign.nonceStr, // 必填,生成签名的随机串
            "signature": sign.signature, // 必填,签名,见附录1
            "jsApiList": ['onMenuShareAppMessage', 'onMenuShareTimeline', 'onMenuShareQQ','hideMenuItems']
          });
        }
      }
    });
  	$(function(){
		// 分享
		var title = '啊啊啊啊!';//分享的标题
		var getlink = location.href;
		var desc = '啦啦啦啦!';//分享的简介
		var imgUrl='fenxiang.png';//分享图片地址
		//var link = 'http://10.100.0.108:8020/guoer/src/main/webapp/static/promo/doubleEleven.html?device=';
		wx.ready(function(){================
			// 2.1 监听“分享给朋友”,按钮点击、自定义分享内容及分享结果接口
			wx.onMenuShareAppMessage({
				title: title,
				desc: desc,
				link: getlink,
				imgUrl: imgUrl,
				success: function () { 
					//alert('分享成功')
		    }
			});      
	
			// 2.2 监听“分享到朋友圈”按钮点击、自定义分享内容及分享结果接口
			wx.onMenuShareTimeline({
				title: title,
                //desc: desc,
				link: getlink,
				imgUrl: imgUrl,
				success: function () { 
					//alert('分享成功')
		        }
			});
	
			wx.error(function(res){
		      // config信息验证失败会执行error函数,如签名过期导致验证失败,具体错误信息可以打开config的debug模式查看,也可以在返回的res参数中查看,对于SPA可以在这里更新签名。
		      //alert("errorMSG:"+res);
		  });
		})
	})
</script>
  • 2
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
好的,关于微信分享的问题,我可以给你一些指导。首先,你需要在你的 HTML5 页面中引入微信 JS-SDK,然后在页面加载完成后初始化 JS-SDK。接着,你需要通过 JS-SDK 提供的接口来配置分享的内容和参数,最后调用分享接口即可完成分享。 具体步骤如下: 1. 引入微信 JS-SDK 在 HTML 页面中引入微信 JS-SDK,如下所示: ```html <script src="https://res.wx.qq.com/open/js/jweixin-1.6.0.js"></script> ``` 2. 初始化 JS-SDK 在页面加载完成后,初始化 JS-SDK。你需要先通过微信公众平台获取到你的 AppID 和 AppSecret,然后使用这些信息初始化 JS-SDK。示例代码如下: ```javascript wx.config({ debug: false, appId: 'your app id', timestamp: 'your timestamp', nonceStr: 'your nonceStr', signature: 'your signature', jsApiList: [ 'onMenuShareAppMessage', 'onMenuShareTimeline', 'onMenuShareQQ', 'onMenuShareWeibo', 'onMenuShareQZone' ] }); ``` 其中,`appId`、`timestamp`、`nonceStr` 和 `signature` 分别是通过微信公众平台生成的,用于验证你的身份和权限的参数。`jsApiList` 是你需要使用的 JS-SDK 接口列表。 3. 配置分享内容和参数 在初始化 JS-SDK 后,你需要通过 JS-SDK 提供的接口来配置分享的内容和参数。示例代码如下: ```javascript wx.ready(function() { wx.onMenuShareAppMessage({ title: '分享标题', desc: '分享描述', link: '分享链接', imgUrl: '分享缩略图', trigger: function(res) {}, success: function(res) {}, cancel: function(res) {}, fail: function(res) {} }); wx.onMenuShareTimeline({ title: '分享标题', link: '分享链接', imgUrl: '分享缩略图', trigger: function(res) {}, success: function(res) {}, cancel: function(res) {}, fail: function(res) {} }); }); ``` 其中,`onMenuShareAppMessage` 和 `onMenuShareTimeline` 分别是分享给好友和分享朋友圈的接口。你需要提供分享的标题、描述、链接和缩略图等参数。 4. 调用分享接口 最后,在页面中调用分享接口即可完成分享。示例代码如下: ```javascript wx.ready(function() { wx.onMenuShareAppMessage({ title: '分享标题', desc: '分享描述', link: '分享链接', imgUrl: '分享缩略图', trigger: function(res) {}, success: function(res) {}, cancel: function(res) {}, fail: function(res) {} }); wx.onMenuShareTimeline({ title: '分享标题', link: '分享链接', imgUrl: '分享缩略图', trigger: function(res) {}, success: function(res) {}, cancel: function(res) {}, fail: function(res) {} }); // 在需要分享的地方调用 shareAppMessage 和 shareTimeline 接口 // 示例代码如下 document.querySelector('#share-btn').addEventListener('click', function() { wx.shareAppMessage({ title: '分享标题', desc: '分享描述', link: '分享链接', imgUrl: '分享缩略图', trigger: function(res) {}, success: function(res) {}, cancel: function(res) {}, fail: function(res) {} }); }); document.querySelector('#share-timeline-btn').addEventListener('click', function() { wx.shareTimeline({ title: '分享标题', link: '分享链接', imgUrl: '分享缩略图', trigger: function(res) {}, success: function(res) {}, cancel: function(res) {}, fail: function(res) {} }); }); }); ``` 这样就完成了微信分享功能实现。需要注意的是,由于微信的安全机制,分享链接必须是在微信公众平台中配置过的域名,否则可能无法正常分享
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值