你了解微信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】
。此文章来源于网络,如有侵权,请联系删除