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

久未见 提交于 2019-12-09 12:05:31

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

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

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!