自己做部落格以來,很早之前分享過文章至朋友圈,那個時候分享過去的文章自動擷取頁面的比例适合的圖檔為所縮略圖:

後期就很少分享至朋友圈, 近來分享文章給朋友後,發現不帶縮略圖和簡介了,覺得這樣很不好看,百度一下如何解決這個問題,發現網友貢獻最多的就是在body之後加一個img标簽并且設定display:none,雖然這種方法感覺不科學,但我還是嘗試了一下,發現已經失效了。又百度了一些資料,才知道微信在2017年年初的時候設定了分享隻能通過微信的分享接口來實作縮略圖和簡介的調用,網上的教程要麼太深奧,要麼不實用。
餘鬥研究一番後,精簡了一些代碼,實作了在網站上實作微信分享接口(設定标題、縮略圖、連接配接、描述),具體的方法如下(文章末尾有demo下載下傳入口):
一、先登入微信公衆平台進入“公衆号設定”的“功能設定”裡填寫“JS接口安全域名”。(注:認證帳号才有分享權限)
二、建立一個demo.php檔案和wxshare.js檔案:
demo.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;
}?>
微信分享接口示例
這是一個微信分享接口示例預覽頁面,可以發送到微信端預覽并轉發給朋友或者分享朋友圈看看效果如何!
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
});varwstitle= "微信分享接口示例預覽";//此處填寫分享标題
varwsdesc= "這是一個微信分享接口示例預覽頁面,可以發送到微信端預覽并轉發給朋友或者分享朋友圈看看效果如何!";//此處填寫分享簡介
varwslink= "<?php echo $surl; ?>";//此處擷取分享連結
varwsimg= "https://www.yudouyudou.com/demo/wxshare/wx.jpg";//此處擷取分享縮略圖