• 简书网微信公众号二维码
您当前的位置: 首页 > 知识百科 > 微信js分享接口的一些使用心得是什么?

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

时间:2023-07-01 14:05 阅读数:79 人阅读 分类:知识百科

  你了解微信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 = "$_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分享接口的一些使用心得是什么了吗?希望小编的内容对你有所帮助,如果需要了解更多信息,请关注微微风,我们将为你提供最新最全面和最准确的信息

  推荐阅读:

  微信朋友圈强制分享怎么做的?

  微信强制分享网站的源码

  微信强制分享是怎么搭建的呢?