记录微信开发的一次坑,免以后再采坑

 

如标题所述,本篇所记录的是微信开发的一次采坑。从事开发也有一年多点正在不断的学习增长技能,最近碰到公司项目中的一点琐事再次记录下。

关于微信JSSDK开发的坑,微信从18年底开始对所有域名要求使用https据说是为了增强安全性后来就是一顿大改。然而官方文档却没能及时更新下面是微信官方文档说明

支持https,然而公告上是发了声明,我使用的官方类库还是原来项目使用的HTTP的js类库导致了调用JSSDK是出现了“wx”对象不存在.

后面就是js函数调用失败,整了一下午从同事的设备JSSDK调用页面找的了问题所在。如果是使用微信官方之前的HTTP类库就会出现问题。

就这样,我使用测试号是可以成功调用微信设备配网接口,安卓手机调用也是no problem但是苹果手机却是死活调用不出来,苹果手机使用测试公众号有可以调用(测试号之所以称为测试号还是有原因的啊:在没有正式外网环境下http协议可以使用也是方便了一些没有服务器的同学,这点做的还是可以但就是官方文档没能及时更新采坑连连。)后来将接口升级了才能够使用。

还有一个坑就是许多年前微信硬件的jsApi接口许多人调用startScanWXDevice() 接口调用失败(安卓手机可以,苹果手机不行或是苹果手机可以安卓手机却不行)这需要在

wx.invoke('stopScanWXDevice', {
    'connType' : 'blue'
   }, function(res) {
    $("#initBle").append("<p>停止扫描设备:" + res.err_msg + "</p>");
    console.log('停止扫描设备:', res);
    //alert(res.err_msg);    
});

此接口在加入公众号的原始ID,硬件设备部分也需要将公众号的原始ID烧录进去。这里就不多讲了许多前辈已经有发文了。

之前还踩过

 

微信公众号开发之JSSDK:记config:invalid signature 的错误排查

参考本文的前提是你必须确认自己的生成的签名已经通过了微信官方的签名算法校验,这样就排除了是签名生成算法错误的可能。

排错过程如下:

1.最可能出错的地方就是用来生成签名的URL错了。在jsp页面代码加入:

<script>alert(location.href.split('#')[0]);</script>

2.将你用来生成签名的URL与上一步显示的URL对比,如果不一样证明是URL错了,使用下列代码获取请求的完整的URL再用来生成签名(包含了"?"后面的参数),本人后台用的是java

StringBuffer url = request.getRequestURL();  

 if (request.getQueryString() != null) {    

    url.append('?');     url.append(request.getQueryString());

 } 

String jsUrl = url.toString();

注:url一定要动态获取,不然生成的签名和微信生成的签名一定会不一样。

3.如果你的JS安全域填对了,那么基本是这样就搞定了,但实际上,经过第二步之后,接着报的错误是config:invalid url domain,那就是JS安全域没写对,注意安全域不需要填写“http://”,你只需要填写一个一级域名就行了,比如www.qq.com。

备注:对于有需要将页面分享的,获取完整的URL的代码可能还得添加截掉#之后的字符的代码,在此提一下也是一个小坑。

 

新人初来乍到将成长的点滴记录下,如有不足之处还望各位老哥指点。

posted @ 2019-03-29 17:49  幕Smile  阅读(208)  评论(0)    收藏  举报