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

虽然微信官方开放了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

相关文章
相关标签/搜索