php版微信公众号自定义分享内容实现方法


Posted in PHP onSeptember 22, 2016

本文实例讲述了php版微信公众号自定义分享内容实现方法。分享给大家供大家参考,具体如下:

微信公众号号在手机中通过api接口可以实现自定义分享内容了,下面我们来看这个接口的实现步骤.

一、准备阶段

公众号一个,微网站一个.

二、绑定域名

先登录微信公众平台进入“公众号设置”的“功能设置”里填写“JS接口安全域名”.

备注:登录后可在“开发者中心”查看对应的接口权限。

三、代码

<?php
//curl获取请求文本内容
function get_curl_contents($url, $method ='GET', $data = array()) {
  if ($method == 'POST') {
    //使用crul模拟
    $ch = curl_init();
    //禁用htt<a href="/fw/photo.html" target="_blank">ps</a>
    <a href="/tags.php/curl_setopt/" target="_blank">curl_setopt</a>($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
    //允许请求以文件流的形式返回
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
    curl_setopt($ch, CURLOPT_POST, 1);
    curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data));
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30);
    curl_setopt($ch, CURLOPT_DNS_CACHE_TIMEOUT, 30);
    curl_setopt($ch, CURLOPT_URL, $url);
    $result = curl_exec($ch); //执行发送
    curl_close($ch);
  }else {
    if (ini_get('allow_<a href="/tags.php/fopen/" target="_blank">fopen</a>_url') == '1') {
      $result = file_get_contents($url);
    }else {
      //使用crul模拟
      $ch = curl_init();
      //允许请求以文件流的形式返回
      curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
      //禁用https
      curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
      curl_setopt($ch, CURLOPT_URL, $url);
      $result = curl_exec($ch); //执行发送
      curl_close($ch);
    }
  }
  return $result;
}
//获取微信公从号access_token
function wx_get_token() {
  $AppID = '1235464654';//AppID(应用ID)
  $AppSecret = '705641465sdfasdf456465a4sdf';//AppSecret(应用密钥)
  $url = 'https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid='.$AppID.'&secret='.$AppSecret;
  $res = get_curl_contents($url);
  $res = json_decode($res, true);
  //这里应该把access_token缓存起来,至于要怎么缓存就看各位了,有效期是7200s
  return $res['access_token'];
}
//获取微信公从号ticket
function wx_get_jsapi_ticket() {
  $url = sprintf("https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token=%s&type=jsapi", wx_get_token());
  $res = get_curl_contents($url);
  $res = json_decode($res, true);
  //这里应该把access_token缓存起来,至于要怎么缓存就看各位了,有效期是7200s
  return $res['ticket'];
}
$wx = array();
//生成签名的时间戳
$wx['timestamp'] = time();
//生成签名的随机串
$wx['noncestr'] = 'Wm3WZYTPz0wzccnW';
//jsapi_ticket是公众号用于调用微信JS接口的临时票据。正常情况下,jsapi_ticket的有效期为7200秒,通过access_token来获取。
$wx['jsapi_ticket'] = wx_get_jsapi_ticket();
//分享的地址,注意:这里是指当前网页的URL,不包含#及其后面部分,曾经的我就在这里被坑了,所以小伙伴们要小心了
$wx['url'] = 'http://www.baidu.com';
$string = sprintf("jsapi_ticket=%s&noncestr=%s×tamp=%s&url=%s", $wx['jsapi_ticket'], $wx['noncestr'], $wx['timestamp'], $wx['url']);
//生成签名
$wx['signature'] = sha1($string);
/*
注意事项
签名用的noncestr和timestamp必须与wx.config中的nonceStr和timestamp相同。
签名用的url必须是调用JS接口页面的完整URL。
出于安全考虑,开发者必须在服务器端实现签名的逻辑。
*/
?>

四、视图显示

在需要调用JS接口的页面引入如下JS文件,支持https:http://res.wx.qq.com/open/js/jweixin-1.0.0.js

通过config接口注入权限验证配置.

<script>
//通过config接口注入权限验证配置
wx.config({
  debug : false,
  appId : 'AppID',
  timestamp : '<?php echo $wx["timestamp"];?>',
  nonceStr : '<?php echo $wx["noncestr"];?>',
  signature : '<?php echo $wx["signature"];?>',
  jsApiList : ['onMenuShareTimeline', 'onMenuShareAppMessage', 'onMenuShareQQ', 'onMenuShareWeibo']
});
wx.ready(function(){
  var
    s_title = '分享标题',  // 分享标题
    s_link = '分享链接',  // 分享链接
    s_desc = '分享描述',  //分享描述
    s_imgUrl = '分享图片'; // 分享图标
  //朋友圈
  wx.onMenuShareTimeline({
    title: s_title, // 分享标题
    link: s_link, // 分享链接
    imgUrl: s_imgUrl, // 分享图标
    success: function () { },
    cancel: function () { }
  });
  //发送给好友
  wx.onMenuShareAppMessage({
    title: s_title, // 分享标题
    desc: s_desc, // 分享描述
    link: s_link, // 分享链接
    imgUrl: s_imgUrl, // 分享图标
    type: '', // 分享类型,music、video或link,不填默认为link
    dataUrl: '', // 如果type是music或video,则要提供数据链接,默认为空
    success: function () {},
    cancel: function () {}
  });
  //QQ好友
  wx.onMenuShareQQ({
    title: s_title, // 分享标题
    desc: s_desc, // 分享描述
    link: s_link, // 分享链接
    imgUrl: s_imgUrl, // 分享图标
    success: function () { },
    cancel: function () { }
  });
  //腾讯微博
  wx.onMenuShareWeibo({
    title: s_title, // 分享标题
    desc: s_desc, // 分享描述
    link: s_link, // 分享链接
    imgUrl: s_imgUrl, // 分享图标
    success: function () { },
    cancel: function () { }
  });
});
</script>

五、大功告成

基本上的流程就是这样了,比较麻烦的一点就是生成签名那一块,注意一点就行了.

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
PHP 增加了对 .ZIP 文件的读取功能
Oct 09 PHP
如何在PHP中使用正则表达式进行查找替换
Jun 13 PHP
php上传文件中文文件名乱码的解决方法
Nov 01 PHP
带密匙的php加密解密示例分享
Jan 29 PHP
php 删除cookie方法详解
Dec 01 PHP
php字符串分割函数用法实例
Mar 17 PHP
php实现paypal 授权登录
May 28 PHP
php中使用GD库做验证码
Mar 31 PHP
php简单的上传类分享
May 15 PHP
PHP使用PHPExcel删除Excel单元格指定列的方法
Jul 06 PHP
Zend Framework处理Json数据方法详解
Dec 09 PHP
thinkPHP实现的省市区三级联动功能示例
May 05 PHP
php版微信公众平台接口开发之智能回复开发教程
Sep 22 #PHP
PHP判断用户是否已经登录(跳转到不同页面或者执行不同动作)
Sep 22 #PHP
PHP查看SSL证书信息的方法
Sep 22 #PHP
php版微信自动获取收货地址api用法示例
Sep 22 #PHP
php版微信公众平台回复中文出现乱码问题的解决方法
Sep 22 #PHP
php中foreach结合curl实现多线程的方法分析
Sep 22 #PHP
PHP实现上一篇下一篇的方法实例总结
Sep 22 #PHP
You might like
drupal 代码实现URL重写
2011/05/04 PHP
php获取数组长度的方法(有实例)
2013/10/27 PHP
php权重计算方法代码分享
2014/01/09 PHP
php arsort 数组降序排序详细介绍
2016/11/17 PHP
Win10 下安装配置IIS + MySQL + nginx + php7.1.7
2017/08/04 PHP
php使用redis的有序集合zset实现延迟队列应用示例
2020/02/20 PHP
ThinkPHP 框架实现的读取excel导入数据库操作示例
2020/04/14 PHP
JScript的条件编译
2007/05/29 Javascript
jQuery 工具函数学习资料
2010/04/29 Javascript
Javascript引用指针使用介绍
2012/11/07 Javascript
2012年开发人员的16款新鲜的jquery插件体验分享
2012/12/28 Javascript
jQuery模拟新浪微博首页滚动效果的方法
2015/03/11 Javascript
jQuery使用load()方法载入另外一个网页文件内的指定标签内容到div标签的方法
2015/03/25 Javascript
window.onerror()的用法与实例分析
2016/01/27 Javascript
AngularJS利用Controller完成URL跳转
2016/08/09 Javascript
AngularJS中$apply方法和$watch方法用法总结
2016/12/13 Javascript
jquery dialog获取焦点的方法
2017/02/09 Javascript
jQuery实现简单弹窗遮罩效果
2017/02/27 Javascript
knockoutjs模板实现树形结构列表
2017/07/31 Javascript
Vue的百度地图插件尝试使用
2017/09/06 Javascript
vue组件发布到npm简单步骤
2017/11/30 Javascript
python 通过麦克风录音 生成wav文件的方法
2019/01/09 Python
Django组件之cookie与session的使用方法
2019/01/10 Python
详解Django定时任务模块设计与实践
2019/07/24 Python
如何在Python对Excel进行读取
2020/06/04 Python
Selenium+BeautifulSoup+json获取Script标签内的json数据
2020/12/07 Python
python3.9实现pyinstaller打包python文件成exe
2020/12/13 Python
德国富尔达运动鞋店:43einhalb
2020/12/25 全球购物
医院辞职信范文
2014/01/17 职场文书
心理健康教育制度
2014/01/27 职场文书
关于安全的演讲稿
2014/05/09 职场文书
事业单位人员的自我评价范文
2014/09/21 职场文书
奖学金感谢信
2015/01/21 职场文书
2015年教务工作总结
2015/05/23 职场文书
工作证明格式范文
2015/06/15 职场文书
MySQL基础(二)
2021/04/05 MySQL