php快速实现微信分享jssdk接口的配置

来源:赵克立博客 分类: PHP 标签:微信开发发布时间:2017-04-15 18:09:30最后更新:2019-09-10 14:18:05浏览:3303
版权声明:
本文为博主原创文章,转载请声明原文链接...谢谢。o_0。
更新时间:
2019-09-10 14:18:05
温馨提示:
学无止境,技术类文章有它的时效性,请留意文章更新时间,如发现内容有误请留言指出,防止别人"踩坑",我会及时更新文章

实现分享功能

注意:微信官方于2018-08-13调整接口,分享完成后只有成功回调,取消的回调已经失效不能使用,具体请看下面链接

https://open.weixin.qq.com/cgi-bin/announce?spm=a311a.9588098.0.0&action=getannouncement&key=11534138374cE6li&version=

写一个函数方便调用

function weixin_share() {
	include './JSSDK.php';
	//给对营养病自
	$appid       = 'wx5d930509c8ee9784';
	$appsecret   = 'bf7156bde9c59f93e3aec34ed6d4a93f';
	$jssdk       = new JSSDK($appid, $appsecret);
	$signPackage = $jssdk->GetSignPackage();
	$logo        = 'https://ss0.bdstatic.com/5aV1bjqh_Q23odCf/static/superman/img/logo/bd_logo1_31bdc765.png';
	$str         = <<<eot
<script src="http://res.wx.qq.com/open/js/jweixin-1.0.0.js"></script>
<script>
window.wxfx = {
  conf: {
    title: '分享标题',
    desc: '分享描述', // 分享描述
    link: window.location.href,
    ico: 'https://ss0.bdstatic.com/5aV1bjqh_Q23odCf/static/superman/img/logo/bd_logo1_31bdc765.png',
  },
  /**
   * 微信分享成功
   * @return {[type]} [description]
   */
  shareSuccess: function() {
  },
  /**
   * 微信分享失败
   * @return {[type]} [description]
   */
  shareCancel: function() {
  },
  initShare: function() {
    //微信朋友圈分享
    wx.onMenuShareTimeline({
      title: wxfx.conf.title, // 分享标题
      link: wxfx.conf.link, // 分享链接
      imgUrl: wxfx.conf.ico, // 分享图标
      success: function() {
        wxfx.shareSuccess();
        // 用户确认分享后执行的回调函数
      },
      cancel: function() {
        wxfx.shareCancel();
        // 用户取消分享后执行的回调函数
      }
    });
    //微信朋友分享
    wx.onMenuShareAppMessage({
      title: wxfx.conf.title, // 分享标题
      desc: wxfx.conf.desc,
      link: wxfx.conf.link, // 分享链接
      imgUrl: wxfx.conf.ico, // 分享图标
      type: 'link', // 分享类型,music、video或link,不填默认为link
      dataUrl: '', // 如果type是music或video,则要提供数据链接,默认为空
      success: function() {
        wxfx.shareSuccess();
        // 用户确认分享后执行的回调函数
      },
      cancel: function() {
        wxfx.shareCancel();
        // 用户取消分享后执行的回调函数
      }
    });
    //qq分享
    wx.onMenuShareQQ({
      title: wxfx.conf.title, // 分享标题
      desc: wxfx.conf.desc, // 分享描述
      link: wxfx.conf.link, // 分享链接
      imgUrl: wxfx.conf.ico, // 分享图标
      success: function() {
        wxfx.shareSuccess();
        // 用户确认分享后执行的回调函数
      },
      cancel: function() {
        wxfx.shareCancel();
        // 用户取消分享后执行的回调函数
      }
    });
    //腾讯微薄分享
    wx.onMenuShareWeibo({
      title: wxfx.conf.title, // 分享标题
      desc: wxfx.conf.desc, // 分享描述
      link: wxfx.conf.link, // 分享链接
      imgUrl: wxfx.conf.ico, // 分享图标
      success: function() {
        wxfx.shareSuccess();
        // 用户确认分享后执行的回调函数
      },
      cancel: function() {
        wxfx.shareCancel();
        // 用户取消分享后执行的回调函数
      }
    });
    //QQ空间分享
    wx.onMenuShareQZone({
      title: wxfx.conf.title, // 分享标题
      desc: wxfx.conf.desc, // 分享描述
      link: wxfx.conf.link, // 分享链接
      imgUrl: wxfx.conf.ico, // 分享图标
      success: function() {
        wxfx.shareSuccess();
        // 用户确认分享后执行的回调函数
      },
      cancel: function() {
        wxfx.shareCancel();
        // 用户取消分享后执行的回调函数
      }
    });
  }
};
//下面开始初始化配置参数
wxfx.conf={
    title: document.getElementsByTagName('title')[0].innerHTML,
    desc: document.getElementsByName('description')[0].content, // 分享描述
    link: window.location.href,
    ico: '{$logo}',
};
    wx.config({
      debug: true,
      appId: '{$signPackage["appId"]}',
      timestamp: {$signPackage["timestamp"]},
      nonceStr: '{$signPackage["nonceStr"]}',
      signature: '{$signPackage["signature"]}',
      jsApiList: ['onMenuShareTimeline','onMenuShareAppMessage','onMenuShareQQ','onMenuShareWeibo','onMenuShareQZone'
      ]
    });
    wx.ready(function() {
      //wxfx.initShare();
    });
    wx.error(function(res) {
    });
</script>
eot;
	return $str;
}

里面用到啦一个JSSDK.php

这个库文件,直接下载下面的附件

注意:jssdk.php这个文件会取jsapi_ticket和access_token  过期时间为7200秒库里面是直接保存到会话里面啦,你可以自己保存到缓存或其它地方,并且在文件第17左右行有取当前url地址用来生成签名的,当前页面的话直接来当前请求地址就可以,但是如果你是动态生成js的话这个地方应该使用来源地址,(文件里就是使用的来源地址生成的如果跟你的需求不一样可以换成注释掉的代码)

weixinshare.zip


blob.png

里面的其它两个文件是保存访问token和ticket的,附件里是没有这两个文件的,附件里直接保存到会话里面啦,我测试环境是保存到本地的两个文件。

特别注意

如果你的页面是单页面应用的webapp类型,这种页面只有第一次会刷新,那么需要在url每次变化后执行上面的签名配置并且注册回调,签名的时候android直接取当前变化后的url就可以啦,但是ipone下面不能用这种方式,它得取第一次进入页面的地址并且保存下来切换到其它页面后如果需要重新配置也要用入口页面的地址,使用变化过后的地址会报签名错误


微信号:kelicom QQ群:215861553 紧急求助须知
Win32/PHP/JS/Android/Python