自己做博客以來,很早之前分享過文章至朋友圈,那個時候分享過去的文章自動獲取頁面的比例適合的圖片為所縮略圖:
后期就很少分享至朋友圈, 近來分享文章給朋友后,發現不帶縮略圖和簡介了,覺得這樣很不好看,百度一下如何解決這個問題,發現網友貢獻最多的就是在body之后加一個img標簽並且設置display:none,雖然這種方法感覺不科學,但我還是嘗試了一下,發現已經失效了。又百度了一些資料,才知道微信在2017年年初的時候設置了分享只能通過微信的分享接口來實現縮略圖和簡介的調用,網上的教程要么太深奧,要么不實用。
余斗研究一番后,精簡了一些代碼,實現了在網站上實現微信分享接口(設置標題、縮略圖、連接、描述),具體的方法如下(文章末尾有demo下載入口):
一、先登錄微信公眾平台進入“公眾號設置”的“功能設置”里填寫“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×tamp=$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 () {
}
});
});
參考網址
https://www.yudouyudou.com/jiaochengheji/wangzhanjianshe/1225.html