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制作简单的内容采集器的原理分析
Oct 01 PHP
PhpMyAdmin中无法导入sql文件的解决办法
Jan 08 PHP
PHP foreach循环使用详解与实例代码
May 08 PHP
php设计模式 Bridge (桥接模式)
Jun 26 PHP
linux命令之调试工具strace的深入分析
Jun 03 PHP
简单实用的.net DataTable导出Execl
Oct 28 PHP
PHP正则提取不包含指定网址的图片地址的例子
Apr 21 PHP
php使用memcoder将视频转成mp4格式的方法
Mar 12 PHP
摘自织梦CMS的HTTP文件下载类
Aug 08 PHP
PHP编写登录验证码功能 附调用方法
May 19 PHP
数组任意位置插入元素,删除特定元素的实例
Mar 02 PHP
ThinkPHP5&amp;5.1框架关联模型分页操作示例
Aug 03 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
FireFox与IE 下js兼容触发click事件的代码
2008/11/20 Javascript
javascript appendChild,innerHTML,join性能比较代码
2009/08/29 Javascript
javascript闭包传参和事件的循环绑定示例探讨
2014/04/17 Javascript
nodejs教程之异步I/O
2014/11/21 NodeJs
Js数组排序函数sort()介绍
2015/06/08 Javascript
JavaScript中实现map功能代码分享
2015/06/11 Javascript
jqueryMobile使用示例分享
2016/01/12 Javascript
jQuery实现鼠标滚动图片延迟加载效果附源码下载
2016/06/28 Javascript
为什么我们要做三份 Webpack 配置文件
2017/09/18 Javascript
关于axios如何全局注册浅析
2018/01/14 Javascript
jQuery pjax 应用简单示例
2018/09/20 jQuery
es6中比较有用的7个技巧小结
2019/07/12 Javascript
node 标准输入流和输出流代码实例
2019/09/19 Javascript
最全vue的vue-amap使用高德地图插件画多边形范围的示例代码
2020/07/17 Javascript
Python获取当前路径实现代码
2017/05/08 Python
Python队列的定义与使用方法示例
2017/06/24 Python
Pycharm创建项目时如何自动添加头部信息
2019/11/14 Python
基于TensorFlow的CNN实现Mnist手写数字识别
2020/06/17 Python
Python3爬虫中pyspider的安装步骤
2020/07/29 Python
利用Python实现朋友圈中的九宫格图片效果
2020/09/03 Python
PyCharm常用配置和常用插件(小结)
2021/02/06 Python
微软台湾官方网站:Microsoft台湾
2018/08/15 全球购物
天网面试题
2013/04/07 面试题
在DELPHI中调用存储过程和使用内嵌SQL哪种方式更好
2016/11/22 面试题
教师实习自我鉴定
2013/12/18 职场文书
模特职业生涯规划范文
2014/02/26 职场文书
给老婆的保证书范文
2014/04/28 职场文书
团代会宣传工作方案
2014/05/08 职场文书
留守儿童工作方案
2014/06/02 职场文书
优秀毕业生的求职信
2014/07/21 职场文书
2014年教师节演讲稿
2014/09/03 职场文书
法人代表证明书
2014/09/18 职场文书
群众路线教育实践活动对照检查材料
2014/09/22 职场文书
2016应届大学生自荐信模板
2016/01/28 职场文书
Python+OpenCV实现在图像上绘制矩形
2022/03/21 Python
解决spring.thymeleaf.cache=false不起作用的问题
2022/06/10 Java/Android