微信JS-SDK实现自定义分享功能,分享给朋友,分享到朋友圈「建议收藏」

微信JS-SDK实现自定义分享功能,分享给朋友,分享到朋友圈「建议收藏」微信JS-SDK实现自定义分享功能,分享给朋友,分享到朋友圈导语:微信分享在手机右上角的三个点一键分享就ok了,那么对于分享到朋友圈,分享给朋友是怎么实现的呢?对于那种活动分享送流量是怎么定位分享者的呢?而想要将文章发送给朋友又是怎么获取到的朋友列表的呢?微信JS-SDK是微信公众平台面向网页开发者提供的基于微信内的网页开发工具包。JSSDK使用步骤1、绑定域

大家好,又见面了,我是你们的朋友全栈君。

微信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>
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/145188.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • java实现十进制转十六进制_十进制转十六进制java代码

    java实现十进制转十六进制_十进制转十六进制java代码基础练习十六进制转十进制时间限制:1.0s内存限制:512.0MB问题描述  从键盘输入一个不超过8位的正的十六进制数字符串,将它转换为正的十进制数后输出。注:十六进制数中的10~15分别用大写的英文字母A、B、C、D、E、F表示。样例输入FFFF样例输出65535太奇葩了,拿到这道题受上道题的影响,自己写了进制转化函数,结果,25分。。。。imp…

    2025年5月27日
    5
  • Java8 Stream使用flatMap合并List

    Java8 Stream使用flatMap合并List之前也写过很多篇关于Java8使用的文章了,但是回顾一下,好像还没介绍过Java8Stream的flatMap操作,昨天刚好在工作中遇到一个场景,发现flatMap简直太方便了,这里总结一下flatMap的常规使用。附带讲一下,使用Java8实现集合的并、交、差操作,其实之前也讲过一种使用Guava的实现方式,具体请参考Guava集合工具 flatMap 首先看一下一种场景,存在一个M…

    2022年6月4日
    99
  • 数组和链表的区别和优缺点总结!

    数组和链表的区别和优缺点总结!数组和链表是两种基本的数据结构,他们在内存存储上的表现不一样,所以也有各自的特点。链表中各结点在内存中的存放位置是任意的。 链表与数组的主要区别(1)数组的元素个数是固定的,而组成链表的结点个数可按需要增减;(2)数组元素的存诸单元在数组定义时分配,链表结点的存储单元在程序执行时动态向系统申请:(3)数组中的元素顺序关系由元素在数组中的位置(即下标)确定,链表中的结点顺序关系…

    2022年6月16日
    27
  • EJB学习心得

    EJB学习心得注意:在EJB中对Bean的定位是通过JNDI的名称来确定的一:当EJB发布到JBOSS时,如果我们没有为它指定全局JNDI名称或修改其默认的EJB名称, JBOSS就会按照默认的命名规则为EJB生成全局JNDI名称。默认的命名规则如下: 如果把EJB作为模块打包进后缀*.ear的JAVAEE企业应用文件,默认的全局JNDI名称是  本地接口:EAR-FILE-BASE-NAME/EJB-C…

    2022年9月29日
    5
  • cv图像翻转,EmguCV图像旋转「建议收藏」

    iusethiscodeprivatevoidbutton12_Click(objectsender,EventArgse){Bitmapbm=newBitmap(pictureBox1.Image);Imageimg=newImage(bm);doublex=20;img.Rotate(x,newGray(255));pictureBox9.Image…

    2022年4月10日
    67
  • FM Bandwidth IQ Rate Sample Rate

    FM Bandwidth IQ Rate Sample Rate在labview中,编写FM的程序经常会涉及到以下几个名词,他们的关系是怎样的呢?BandwidthdeviationfrequencymodulatingfrequencyIQRateSampleRate首先关于带宽Bandwidth他是由以下公式决定的。请参考Carson’sRule。FMBandwidth=2(Δf + fm)

    2022年10月17日
    4

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号