虽然微信官方开放了js-sdk,可是在某些老版本的微信上存在兼容性问题,好比在安卓微信6.0.1版本上分享接口就没法使用,官方给出的解决方案就是升级微信。这不坑爹呢!我又不能强制个人用户去升级微信版本,总不能就抛弃他们吧?因此咱们须要:php
###破解版js接口 点击查看项目 该接口为一大牛 @Alienfe 所作,当时在微信屏蔽私有接口的状况下,这个js库帮了大忙,破解了微信的限制,使得咱们可以继续使用私有接口。可是在最新微信6.1版本,该库已经失效。html
###官方sdk 既然官方提供了接口,咱们之后确定是切换到上面的,代码重构少不了的,该接口的开发文档在这里: 官方js-sdk文档 说实话,该文档虽然功能强大,可是配置麻烦,须要请求受权后拿到受权码放到前端js里,简直蛋疼无比,并且不知道未认证的公众号可否使用。前端
这里就不详细介绍两个接口的使用方法了,这里主要说明一下如何合理使用两个接口,前面说过了,破解版js接口在6.1以上无效,而官方接口在低版本上存在兼容性问题,因此这里咱们须要同时使用两个接口,以保证全部微信用户都可以正常分享。git
那么,个人策略是:github
1.微信版本<6.0.2 使用破解版接口 2.微信版本>=6.0.2 使用官方sdk后端
就以个人PHP项目为例,在后端,我经过 userAgent 提取微信版本号:微信
//判断微信版本是否高于6.0.2,低版本用旧接口,高版本用jssdk preg_match('/MicroMessenger\/(.*?)[^\d\.]/',$_SERVER['HTTP_USER_AGENT'],$m); if (version_compare($m[1], '6.0.2') == 1) { $this->assign('wxHighVersion',true); } else { $this->assign('wxHighVersion',false); }
wxHighVersion 是绑定到视图模板的变量名,以便咱们在模板决定用哪一个接口。模板部分:this
<script> //自定义分享参数 var wxData = { "imgUrl": "",//图片 "link": "",//分享连接 "title": "",//定义分享标题 "desc":"" }; </script> <?php if(!$wxHighVersion): ?> <script src="/js/WeixinApi.js"></script> <script> //使用破解版接口 </script> <?php else: ?> <script src="http://res.wx.qq.com/open/js/jweixin-1.0.0.js"></script> <script> //使用官方接口 </script> <?php endif; ?>
这样,我就实现了全版本兼容,只是重构代码须要细心+耐心。code