关于微信js分享接口的一些使用心得

原创
2015/01/21 13:24
阅读数 3.9W

虽然微信官方开放了js-sdk,但是在某些老版本的微信上存在兼容性问题,比如在安卓微信6.0.1版本上分享接口就无法使用,官方给出的解决方案就是升级微信。这不坑爹呢!我又不能强制我的用户去升级微信版本,总不能就抛弃他们吧?所以我们需要:

###破解版js接口 点击查看项目 该接口为一大牛 @Alienfe 所做,当时在微信屏蔽私有接口的情况下,这个js库帮了大忙,破解了微信的限制,使得我们能够继续使用私有接口。但是在最新微信6.1版本,该库已经失效。

###官方sdk 既然官方提供了接口,我们以后肯定是切换到上面的,代码重构少不了的,该接口的开发文档在这里:  官方js-sdk文档 说实话,该文档虽然功能强大,但是配置麻烦,需要请求授权后拿到授权码放到前端js里,简直蛋疼无比,而且不知道未认证的公众号能否使用。

这里就不详细介绍两个接口的使用方法了,这里主要说明一下如何合理使用两个接口,前面说过了,破解版js接口在6.1以上无效,而官方接口在低版本上存在兼容性问题,所以这里我们需要同时使用两个接口,以保证所有微信用户都能够正常分享。

那么,我的策略是:

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 是绑定到视图模板的变量名,以便我们在模板决定用哪个接口。模板部分:

<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; ?>

这样,我就实现了全版本兼容,只是重构代码需要细心+耐心。

展开阅读全文
打赏
2
17 收藏
分享
加载中
那个项目没了==
2016/08/25 09:55
回复
举报
吾爱博主

引用来自“liang_h”的评论

我想请教一下。你使用最新的 jssdk 在微信版本 < 6.0.2 下有测试过兼容问题吗?还有就是你说的破解版本的js接口确认在6.0.2以下可以使用吗?我最近也在头疼这个问题。身边又没有相应的低版本来测试。所以就来求教你了
应该是 <6.1 的版本。不过我已经放弃兼容了,低版本用户不多。
2015/03/16 09:24
回复
举报
我想请教一下。你使用最新的 jssdk 在微信版本 < 6.0.2 下有测试过兼容问题吗?还有就是你说的破解版本的js接口确认在6.0.2以下可以使用吗?我最近也在头疼这个问题。身边又没有相应的低版本来测试。所以就来求教你了
2015/03/15 21:05
回复
举报

引用来自“吾爱”的评论

引用来自“黄斌杰”的评论

version_compare 方法能不能发出来看看

php内置函数
好的,谢谢- -
2015/01/30 23:59
回复
举报
吾爱博主

引用来自“黄斌杰”的评论

version_compare 方法能不能发出来看看

php内置函数
2015/01/30 21:35
回复
举报
version_compare 方法能不能发出来看看
2015/01/30 18:14
回复
举报
更多评论
打赏
6 评论
17 收藏
2
分享
返回顶部
顶部