之前写过一篇使用微信JS-SDK来实现扫一扫功能的博客
在该博客里介绍了微信JS-SDK的基本用法,其中包括以下几个步骤
还详细介绍了通过config接口注入权限验证配置以及签名算法实现的Java版本
前两天在做微信分享的时候发现按照以前的思路每次都不能正确获取“分享到朋友圈”按钮点击状态及自定义分享内容接口,而是必须通过一个按钮先点击帮点事件,然后才能获取“分享到朋友圈”按钮点击状态及自定义分享内容接口。
回顾一下以前扫一扫的js代码
下面是wx.config的主代码
<script type="text/javascript"> $(function() { var timestamp = $("#timestamp").val();//时间戳 var nonceStr = $("#noncestr").val();//随机串 var signature = $("#signature").val();//签名 wx.config({ debug : true, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。 appId : 'wx622ca8545e5c354b', // 必填,公众号的唯一标识 timestamp : timestamp, // 必填,生成签名的时间戳 nonceStr : nonceStr, // 必填,生成签名的随机串 signature : signature,// 必填,签名,见附录1 jsApiList : [ 'scanQRCode' ] // 必填,需要使用的JS接口列表,所有JS接口列表见附录2 }); }); </script>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
下面是扫一扫的代码
前提是有一个
<button id="scanQRCode">扫码</button>
- 1
- 2
$("#scanQRCode").click(function() { wx.scanQRCode({ needResult : 1, desc : 'scanQRCode desc', success : function(res) { //扫码后获取结果参数:htpp://xxx.com/c/?6123,截取到url中的防伪码后,赋值给Input var url = res.resultStr; /* var tempArray = url.split('?'); var tempNum = tempArray[1]; */ if(url.indexOf(",")>=0){ var tempArray = url.split(','); var tempNum = tempArray[1]; $("#id_securityCode_input").val(tempNum); }else{ $("#id_securityCode_input").val(url); } } }); });
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
以上代码完全没有问题,但是当我配置获取“分享到朋友圈”按钮点击状态及自定义分享内容接口的时候却始终不能成功
解决方案
原来是wx.config执行需要时间,而我们把扫一扫放在外面完全没影响。是因为,我们点击扫码的时候wx.config已经加载好了,而我之前的点击一下再分享和扫码是一个道理,为了不让用户点击一下再分享需要将我上面讲的微信JS-SDK使用步骤中的第四步用到
转自 :
http://blog.csdn.net/frankcheng5143/article/details/51026996