微信转发或分享朋友圈带缩略图、标题和描述的实现方法

自己做博客以来,很早之前分享过文章至朋友圈,那个时候分享过去的文章自动获取页面的比例适合的图片为所缩略图:


后期就很少分享至朋友圈, 近来分享文章给朋友后,发现不带缩略图和简介了,觉得这样很不好看,百度一下如何解决这个问题,发现网友贡献最多的就是在body之后加一个img标签并且设置display:none,虽然这种方法感觉不科学,但我还是尝试了一下,发现已经失效了。又百度了一些资料,才知道微信在2017年年初的时候设置了分享只能通过微信的分享接口来实现缩略图和简介的调用,网上的教程要么太深奥,要么不实用。

余斗研究一番后,精简了一些代码,实现了在网站上实现微信分享接口(设置标题、缩略图、连接、描述),具体的方法如下(文章末尾有demo下载入口):

实现工具:GetwxLink

一、先登录微信公众平台进入“公众号设置”的“功能设置”里填写“JS接口安全域名”。(注:认证帐号才有分享权限

二、创建一个demo.php文件和wxshare.js文件:

demo.php

<?php

        // 步骤1.设置appid和appsecret

        $appid = 'wxff4f410748ba11027'; //此处填写绑定的微信公众号的appid

        $appsecret = '246fbf3e581efeff3b11100aa17d4c4'; //此处填写绑定的微信公众号的密钥id

        // 步骤2.生成签名的随机串

        function nonceStr($length){

                $str = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJK1NGJBQRSTUVWXYZ';//随即串,62个字符

                $strlen = 62;

                while($length > $strlen){

                $str .= $str;

                $strlen += 62;

                }

                $str = str_shuffle($str);

                return substr($str,0,$length);

        }

        // 步骤3.获取access_token

        $result = http_get('https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid='.$appid.'&secret='.$appsecret);

        $json = json_decode($result,true);

        $access_token = $json['access_token'];

        function http_get($url){

                $oCurl = curl_init();

                if(stripos($url,"https://")!==FALSE){

                        curl_setopt($oCurl, CURLOPT_SSL_VERIFYPEER, FALSE);

                        curl_setopt($oCurl, CURLOPT_SSL_VERIFYHOST, FALSE);

                        curl_setopt($oCurl, CURLOPT_SSLVERSION, 1); //CURL_SSLVERSION_TLSv1

                }

                curl_setopt($oCurl, CURLOPT_URL, $url);

                curl_setopt($oCurl, CURLOPT_RETURNTRANSFER, 1 );

                $sContent = curl_exec($oCurl);

                $aStatus = curl_getinfo($oCurl);

                curl_close($oCurl);

                if(intval($aStatus["http_code"])==200){

                        return $sContent;

                }else{

                        return false;

                }

        }

        // 步骤4.获取ticket

        $url = "https://api.weixin.qq.com/cgi-bin/ticket/getticket?type=jsapi&access_token=$access_token";

        $res = json_decode ( http_get ( $url ) );

        $ticket = $res->ticket;

        // 步骤5.生成wx.config需要的参数

        $surl = 'http://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];

        $ws = getWxConfig( $ticket,$surl,time(),nonceStr(16) );

        function getWxConfig($jsapiTicket,$url,$timestamp,$nonceStr) {

                $string = "jsapi_ticket=$jsapiTicket&noncestr=$nonceStr&timestamp=$timestamp&url=$url";

                $signature = sha1 ( $string );

                $WxConfig["appId"] = $appid;

                $WxConfig["nonceStr"] = $nonceStr;

                $WxConfig["timestamp"] = $timestamp;

                $WxConfig["url"] = $url;

                $WxConfig["signature"] = $signature;

                $WxConfig["rawString"] = $string;

                return $WxConfig;

        }

?>

<!DOCTYPE html>

<html lang="en">

<head>

        <meta charset="gbk">

        <title>微信分享接口示例</title>

    <meta name="keywords" content="微信分享接口示例"/>

        <meta name="description" content="这是一个微信分享接口示例预览页面,可以发送到微信端预览并转发给朋友或者分享朋友圈看看效果如何!"/>

</head>

<body>

<p></p>

<h1 style="text-algin:center;">这是一个微信分享接口示例预览页面,可以发送到微信端预览并转发给朋友或者分享朋友圈看看效果如何!</h1>

<!--步骤6.调用JS接口-->

<script src="http://res.wx.qq.com/open/js/jweixin-1.0.0.js"></script>

<script>

wx.config({

                debug: true, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。

                appId: 'wxff4f410721541a1967', // 必填,公众号的唯一标识

                timestamp: "<?php echo $ws["timestamp"]; ?>", // 必填,生成签名的时间戳

                nonceStr: '<?php echo $ws["nonceStr"]; ?>', // 必填,生成签名的随机串

                signature: '<?php echo $ws["signature"]; ?>',// 必填,签名,见附录1

                jsApiList: [

                        'checkJsApi',

                        'onMenuShareTimeline',

                        'onMenuShareAppMessage',

                        'onMenuShareQQ',

                        'onMenuShareWeibo'

                ] // 必填,需要使用的JS接口列表,所有JS接口列表见附录2

        });

    var wstitle = "微信分享接口示例预览"; //此处填写分享标题

    var wsdesc = "这是一个微信分享接口示例预览页面,可以发送到微信端预览并转发给朋友或者分享朋友圈看看效果如何!"; //此处填写分享简介

    var wslink = "<?php echo $surl; ?>"; //此处获取分享链接

    var wsimg = "https://www.yudouyudou.com/demo/wxshare/wx.jpg"; //此处获取分享缩略图

</script>

<script src="https://www.yudouyudou.com/demo/wxshare/wxshare.js"></script>

</body>

</html>

wxshare.js

wx.ready(function () {

        // 分享到朋友圈

        wx.onMenuShareTimeline({

                title: wstitle,

                link: wslink,

                imgUrl: wsimg,

                success: function () {

                        alert('分享成功');

                },

                cancel: function () {

                }

        });

        // 分享给朋友

        wx.onMenuShareAppMessage({

                title: wstitle,

                desc: wsdesc,

                link: wslink,

                imgUrl: wsimg,

                success: function () {

                    alert('分享成功');

                },

                cancel: function () {

                }

        });

        // 分享到QQ

        wx.onMenuShareQQ({

                title: wstitle,

                desc: wsdesc,

                link: wslink,

                imgUrl: wsimg,

                success: function () {

                        alert('分享成功');

                },

                cancel: function () {

                }

        });

        // 微信到腾讯微博

        wx.onMenuShareWeibo({

                title: wstitle,

                desc: wsdesc,

                link: wslink,

                imgUrl: wsimg,

                success: function () {

                        alert('分享成功');

                },

                cancel: function () {

                }

        });

        // 分享到QQ空间

        wx.onMenuShareQZone({

                title: wstitle,

                desc: wsdesc,

                link: wslink,

                imgUrl: wsimg,

                success: function () {

                        alert('分享成功');

                },

                cancel: function () {

                }

        });

});

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,098评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,213评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,960评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,519评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,512评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,533评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,914评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,574评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,804评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,563评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,644评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,350评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,933评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,908评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,146评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,847评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,361评论 2 342

推荐阅读更多精彩内容