网页链接分享到微信朋友圈带图标和摘要的方法
来源:互联网 发布:pdf转ppt软件在线 编辑:程序博客网 时间:2024/06/06 16:05
先看效果:
我不喜欢回形针。
以前我仅仅把网页开始的地方放一个不可见的图片,后来发现没有效果。
现在我们开始:
原料:微信公众号:
步骤一:绑定域名
先登录微信公众平台进入“公众号设置”的“功能设置”里填写“JS接口安全域名”。
步骤二:引入JS文件
src="http://res.wx.qq.com/open/js/jweixin-1.2.0.js">
PHP:
$jssdk = new JSSDK("这里是你的AppID", "这里是你的AppSecret"); //这里改成你自己公众号里的$signPackage = $jssdk->GetSignPackage();class JSSDK { private $appId; private $appSecret; public function __construct($appId, $appSecret) { $this->appId = $appId; $this->appSecret = $appSecret; } public function getSignPackage() { $jsapiTicket = $this->getJsApiTicket(); // 注意 URL 一定要动态获取,不能 hardcode. $protocol = (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off' || $_SERVER['SERVER_PORT'] == 443) ? "https://" : "http://"; $url = "$protocol$_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, "rawString" => $string ); return $signPackage; } private function createNonceStr($length = 16) { $chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"; $str = ""; for ($i = 0; $i < $length; $i++) { $str .= substr($chars, mt_rand(0, strlen($chars) - 1), 1); } return $str; } private function getJsApiTicket() { // jsapi_ticket 应该全局存储与更新,以下代码以写入到文件中做示例 $data = json_decode($this->get_php_file("jsapi_ticket.php")); if ($data->expire_time < time()) { $accessToken = $this->getAccessToken(); // 如果是企业号用以下 URL 获取 ticket // $url = "https://qyapi.weixin.qq.com/cgi-bin/get_jsapi_ticket?access_token=$accessToken"; $url = "https://api.weixin.qq.com/cgi-bin/ticket/getticket?type=jsapi&access_token=$accessToken"; $res = json_decode($this->httpGet($url)); $ticket = $res->ticket; if ($ticket) { $data->expire_time = time() + 7000; $data->jsapi_ticket = $ticket; $this->set_php_file("jsapi_ticket.php", json_encode($data)); } } else { $ticket = $data->jsapi_ticket; } return $ticket; } private function getAccessToken() { // access_token 应该全局存储与更新,以下代码以写入到文件中做示例 $data = json_decode($this->get_php_file("access_token.php")); if ($data->expire_time < time()) { // 如果是企业号用以下URL获取access_token // $url = "https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=$this->appId&corpsecret=$this->appSecret"; $url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=$this->appId&secret=$this->appSecret"; $res = json_decode($this->httpGet($url)); $access_token = $res->access_token; if ($access_token) { $data->expire_time = time() + 7000; $data->access_token = $access_token; $this->set_php_file("access_token.php", json_encode($data)); } } else { $access_token = $data->access_token; } return $access_token; } private function httpGet($url) { $curl = curl_init(); curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); curl_setopt($curl, CURLOPT_TIMEOUT, 500); // 为保证第三方服务器与微信服务器之间数据传输的安全性,所有微信接口采用https方式调用,必须使用下面2行代码打开ssl安全校验。 // 如果在部署过程中代码在此处验证失败,请到 http://curl.haxx.se/ca/cacert.pem 下载新的证书判别文件。 curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, true); curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, true); curl_setopt($curl, CURLOPT_URL, $url); $res = curl_exec($curl); curl_close($curl); return $res; } private function get_php_file($filename) { return trim(substr(file_get_contents($filename), 15)); } private function set_php_file($filename, $content) { $fp = fopen($filename, "w"); fwrite($fp, "<?php exit();?>" . $content); fclose($fp); }}
js:
wx.config({ debug: false, appId: '<?php echo $signPackage["appId"];?>', timestamp: <?php echo $signPackage["timestamp"];?>, nonceStr: '<?php echo $signPackage["nonceStr"];?>', signature: '<?php echo $signPackage["signature"];?>', jsApiList: [ 'onMenuShareTimeline', // 'onMenuShareAppMessage', 'onMenuShareQQ', 'onMenuShareWeibo', 'onMenuShareQZone' ] }); wx.ready(function () { var shareData = {title: '<?php echo "标题";?>', desc: '<?php echo "摘要";?>', //如果要换行的话:\nlink: '<?php echo "链接url";?>',//可以不写imgUrl: '<?php echo "图片链接";?>',success: function () { // 用户确认分享后执行的回调函数 //alert('分享成功'); }, cancel: function () { // 用户取消分享后执行的回调函数 //alert('取消了分享'); } }; wx.onMenuShareAppMessage(shareData);//分享给好友 wx.onMenuShareTimeline(shareData);//分享到朋友圈 wx.onMenuShareQQ(shareData);//分享给手机QQ wx.onMenuShareWeibo(shareData);//分享腾讯微博 wx.onMenuShareQZone(shareData);//分享到QQ空间 });wx.error(function (res) { //alert(res.errMsg);//错误提示 });
测试效果:
扫一扫,输入”马亮武“,查询并分享
阅读全文
1 0
- 网页链接分享到微信朋友圈带图标和摘要的方法
- 微信分享朋友圈分享代码自定义标题、说明、图标和分享链接
- 有关百度一键分享链接到微信朋友圈无法打开网页,报404错误的解决办法,from=timeline&isappinstalled=0,和伪静态规则有关
- 关于微信朋友圈分享链接图标问题记录
- 分享图标的下载链接
- 在网页中添加“分享到微信朋友圈”按钮的代码分享
- android应用中分享到微信好友和朋友圈的实现
- h5链接分享微信朋友圈,压缩图标题内容设置
- 如何增加微信朋友圈分享链接的小图片
- 如何增加微信朋友圈分享链接的小图片
- 如何增加微信朋友圈分享链接的小图片
- 为什么我的网页分享朋友圈仅仅自己可以看到
- android 系统自带分享文字+图片到微信朋友圈
- shareSDK分享到微信好友和朋友圈
- 如何修改手机端分享网页给微信好友和朋友圈显示的图片和标题
- 微信开发苹果手机和安卓手机在朋友圈分享链接时出现的问题
- 构造分享到微信朋友圈的超链接
- 构造分享到微信朋友圈的超链接
- 《最优控制问题的Legendre伪谱法求解及其应用_徐少兵》的仿真结果
- 百炼-1321-棋盘问题-C语言-递归算法
- php学习打卡记录贴
- 训练自己的人脸检测分类器(级联+LBP的Matlab的实现)
- 1059. C语言竞赛(20)
- 网页链接分享到微信朋友圈带图标和摘要的方法
- 2017-8-8
- java线程中断机制
- 七、DNA片段
- HDU-4034-Graph
- tensorflow运行mnist时的input_data.py文件
- IIS7.5+FastCGI+PHP设置记录
- linux 常用命令-查看文件
- python中进程创建—fork()