微信分享沒有縮略圖


用的微信自帶的分享功能,只做點擊分享到朋友、朋友圈時獲取縮略圖,新版的一定要JS-SDK。

1.今天要做一個活動要分享頁面,發現轉發的時候沒有縮略圖。

網上找了一下,開始解決的方法是要制作一個300*300的圖標,

然后上傳到服務器,然后在模版里加入代碼

<img src="300*300的圖標" width="0" height="0" />

微信會自動抓去第一張display 屬性不為none的圖片。

這樣做了發現還是沒有縮略圖

2.又仔細找了一下,發現是微信出了新版

微信6.5.5版本以后調整了分享規則,針對的是沒有接入公眾號的網頁分享,必須接入微信認證公眾號!

https://mp.weixin.qq.com/s/hAdtKl2i4ilyo9HxT1kXyw

3.解決步驟

目的:已經明確必須使用JSSDK

配置成功后會提示:errMsg :config:ok

 

 

 

按照微信開發文檔說明:https://mp.weixin.qq.com/advanced/wiki?t=t=resource/res_main&id=mp1421141115

步驟一:綁定域名

先登錄微信公眾平台進入“公眾號設置”的“功能設置”里填寫“JS接口安全域名”。

備注:登錄后可在“開發者中心”查看對應的接口權限。

步驟二:引入JS文件

在需要調用JS接口的頁面引入如下JS文件,(支持https):http://res.wx.qq.com/open/js/jweixin-1.2.0.js

備注:支持使用 AMD/CMD 標准模塊加載方法加載

步驟三:通過config接口注入權限驗證配置

所有需要使用JS-SDK的頁面必須先注入配置信息,否則將無法調用(同一個url僅需調用一次,對於變化url的SPA的web app可在每次url變化時進行調用,目前Android微信客戶端不支持pushState的H5新特性,所以使用pushState來實現web app的頁面會導致簽名失敗,此問題會在Android6.2中修復)。

wx.config({

    debug: true, // 開啟調試模式,調用的所有api的返回值會在客戶端alert出來,若要查看傳入的參數,可以在pc端打開,參數信息會通過log打出,僅在pc端時才會打印。

    appId: '', // 必填,公眾號的唯一標識

    timestamp: , // 必填,生成簽名的時間戳

    nonceStr: '', // 必填,生成簽名的隨機串

    signature: '',// 必填,簽名,見附錄1

    jsApiList: [] // 必填,需要使用的JS接口列表,所有JS接口列表見附錄2

});

就這些,按照要求填寫wx.config中的參數,不難的。 下面我貼代碼,我也是搜了一些資料

 

 

 

js代碼,把這段js代碼放到整個框架共有文件的footer.html里面。隨便訪問一個頁面,用-微信調試工具-打開查看JS-SDK是否成功ok

<script src="http://res.wx.qq.com/open/js/jweixin-1.2.0.js"></script>
<script>
window.onload=function(){//進入頁面就執行ajax,目的為了傳送當前頁面url#前的完整url
var ajaxurl =  '/index.php?ctl=weixin';
var query = new Object();
var urll = location.href.split('#')[0]; //頁面url#前的完整url,可alert彈出查看
query.urll = $.trim(urll);
query.post_type = "json";
$.ajax({
url: ajaxurl,
data:query,
type: "POST",
dataType: "json",
success: function(ress){//成功則執行JS-SDK
console.log(ress);//查看返回結果

//執行JS_SDK
wx.config({
debug: true,
appId: ress.appid,
timestamp: ress.timestamp,
nonceStr: ress.nonceStr,
signature: ress.signature,
jsApiList: ['onMenuShareTimeline','onMenuShareAppMessage']
});
}
,error:function(){
console.log("通信失敗");
}
});
}
/* alert(location.href.split('#')[0]); */ //彈出的url必須與訪問地址一致
</script>

這是微信 JS 接口簽名校驗工具https://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=jsapisign 

 

控制器中的代碼 php。我的框架都是json格式返回的,變量都封裝到$root中,通過output()返回

php中執行獲取appid、timestamp、nonceStr、signature操作,

<?php
class weixin{
public function index()
{
//微信
$url = $GLOBALS['request']['urll'];//獲取當前頁面的url,接收請求參數
$root['url'] = $url;
//獲取access_token,並緩存
$file = 'access_token';//緩存文件名access_token
$expires = 3600;//緩存時間1個小時
if(file_exists($file)) {
$time = filemtime($file);
if(time() - $time > $expires) {
$token = null;
}else {
$token = file_get_contents($file);
}
}else{
fopen("$file", "w+");
$token = null;
}
if (!$token || strlen($token) < 6) {
$res = file_get_contents("https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid='自己的appid'&secret='AppSecret'");//自己的appid,通過微信公眾平台查看appid和AppSecret
$res = json_decode($res, true);
$token = $res['access_token'];
// write('access_token', $token, 3600);
@file_put_contents($file, $token);
}

//獲取jsapi_ticket,並緩存
$file1 = 'jsapi_ticket';
if(file_exists($file1)) {
$time = filemtime($file1);
if(time() - $time > $expires) {
$jsapi_ticket = null;
}else {
$jsapi_ticket = file_get_contents($file1);
}
}else{
fopen("$file1", "w+");
$jsapi_ticket = null;
}
if (!$jsapi_ticket || strlen($jsapi_ticket) < 6) {
$ur = "https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token=$token&type=jsapi";
$res = file_get_contents($ur);
$res = json_decode($res, true);
$jsapi_ticket = $res['ticket'];
@file_put_contents($file1, $jsapi_ticket);
}

$timestamp = time();//生成簽名的時間戳
$metas = range(0, 9);
$metas = array_merge($metas, range('A', 'Z'));
$metas = array_merge($metas, range('a', 'z'));
$nonceStr = '';
for ($i=0; $i < 16; $i++) {
$nonceStr .= $metas[rand(0, count($metas)-1)];//生成簽名的隨機串
}

$string1="jsapi_ticket=".$jsapi_ticket."&noncestr=$nonceStr"."&timestamp=$timestamp"."&url=$url";
$signature=sha1($string1);
$root['appid'] = $appid;
$root['nonceStr'] = $nonceStr;
$root['timestamp'] = $timestamp;
$root['signature'] = $signature;


output($root);
}
}
?>

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM