微信js分享接口的一些使用心得是什么?

作者:鱼爪创媒网 点击:188 发布时间:2021-05-11

你了解微信js吗?最近微信朋友圈里有人在讨论微信js分享接口的一些使用心得是什么?很多微信用户问我微信js分享接口的一些使用心得是什么?下面小编就带你了解一下微信js分享接口的一些使用心得是什么?

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

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

我们要扩展thinkphp的微信类库(注这个是自己扩展改进来用于TP上用)。其实这个主要是继承高级接口类,分别写上缓存方法与以前调用其他接口时一样。代码中,我把官方的sample的PHP代码的方法复制过来用。

该例子中我用库表,实际中推荐你用memcached

缓存表一览:

data

namespace Wx;

class WechatJSAPI extends WechatJSON{

缓存access token

public function cache($key, $value = null, $timeout = 7000) {

$cache = M('access_token');

$token = $cache->where(array('uid'=> 0))->find();

if (empty($value)) {

if ($token && $token['expires_time'] > time()) {

return $token['access_token'];

}

return false;

}

$data = array(

'uid' => 0,

'access_token' => $value,

'expires_time' => time() + $timeout,

);

if($token) {

$cache->where('uid=0')->save($data);

} else {

$cache->data($data)->add();

}

return false;

}

获取签名包数据

public function getSignPackage() {

$jsapiTicket = $this->getJsApiTicket();

if( ! $jsapiTicket) return false;

$url = "http:$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI

]";

$timestamp = time();

$nonceStr = $this->createNonceStr();

这里参数的顺序要按照 key 值 ASCII 码升序排序

$string = "jsapi_ticket=$jsapiTicket&noncestr=$nonceStr×tamp=$timestamp&url=$url";

$signature = sha1($string);

$signPackage = array(

"appId" => $this->_APPID,

"nonceStr" => $nonceStr,

"timestamp" => $timestamp,

"url" => $url,

"signature" => $signature,

以上便是小编为你整理的内容,你知道微信js分享接口的一些使用心得是什么了吗?希望小编的内容对你有所帮助,如果需要了解更多信息,请关注鱼爪创媒网,我们将为你提供最新最全面和最准确的信息

鱼爪创媒是一家专业提供公众号交易、公众号迁移、公众号增粉、公众号买卖交易的平台,如果您有这方面的需求,欢迎电话咨询:13018202357。有任何疑问,可以 【立即咨询】 我们平台的客服或者添加微信号 【13018202357】 。此文章来源于网络,如有侵权,请联系删除

资金保障

提供买卖双方资金担保交易
更放心

法律保障

交易签订具有法律效益合同
提供法律支持

急速退款

专属资金通道,快速拿到
钱款

全资公司

全资控股公司,大平台交易
有保障

服务优质

3500+专业团队,为您提供24
小时一对一贴心服务