如何在微信分享的網(wǎng)頁中顯示描述和圖片

最近項目中開發(fā)的h5頁面,在微信朋友圈分享或分享給朋友的過程中,顯示的信息描述是網(wǎng)址,圖片無法顯示。如下,
WechatIMG3.jpeg

我們希望看到的效果是,
WechatIMG2.jpeg

。

查了網(wǎng)上的資料和微信開發(fā)文檔,是微信為安全原因,防止類似釣魚網(wǎng)址等非法鏈接做的安全措施。為了實現(xiàn)上述功能,我們需要在網(wǎng)站中加入動態(tài)代碼,調(diào)用微信sdk接口,獲得認證。
微信說明文檔鏈接
https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421141115

  1. 根據(jù)開發(fā)說明,我們首先需要先登錄微信公眾平臺進入“公眾號設(shè)置”的“功能設(shè)置”里填寫“JS接口安全域名”。(備注:登錄后可在“開發(fā)者中心”查看對應的接口權(quán)限。)

首先登陸微信開發(fā)者平臺,在 開發(fā)-接口權(quán)限 中打開相應接口,


屏幕快照 2017-11-26 上午7.07.22.png
屏幕快照 2017-11-26 上午7.07.33.png
  1. 進入 設(shè)置-公眾號設(shè)置,打開 功能設(shè)置 標簽,在 JS接口安全域名內(nèi) 添加需要調(diào)用微信js接口網(wǎng)頁的域名。


    屏幕快照 2017-11-26 上午7.20.12.png

設(shè)置JS接口安全域名時,微信會要求開發(fā)者下載一個文件,并上傳到填寫的域名下。完成操作后,安全域名就添加成功了。

  1. 簡單瀏覽了一下開發(fā)文檔,直接下載頁面最后的sample測試代碼。在php文件夾中四個文件
    access_token.php
    jsapi_ticket.php
    jssdk.php
    sample.php
    其中,sample.php是demo頁面。
    jssdk.php中整合了獲得config中需要的timestamp,nonceStr,signature及中間數(shù)據(jù)access_token,jsapi_ticket等函數(shù)。
    access_token.php及jaspi_ticket.php是空的,用來全局存在這兩個變量。微信規(guī)定access_token的有效期7200秒,而且每天調(diào)用不能超過2000次,所有需要全局存儲,在有效周期內(nèi)從本地獲得。

  2. 打開 php 文件中sample.php
    <?php
    require_once "jssdk.php";
    $jssdk = new JSSDK("yourAppID", "yourAppSecret");
    $signPackage = $jssdk->GetSignPackage();
    ?>
    <!DOCTYPE html>
    <html lang="en">
    <head>
    <meta charset="UTF-8">
    <title></title>
    </head>
    <body>

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

wx.config({
debug: true,
appId: '<?php echo $signPackage["appId"];?>',
timestamp: <?php echo $signPackage["timestamp"];?>,
nonceStr: '<?php echo $signPackage["nonceStr"];?>',
signature: '<?php echo $signPackage["signature"];?>',
jsApiList: [
// 所有要調(diào)用的 API 都要加到這個列表中
]
});
wx.ready(function () {
// 在這里調(diào)用 API
});
</script>
</html>

在 $jssdk = new JSSDK("yourAppID", "yourAppSecret"); 處需要添加AppID及AppSecret。

AppID是我們微信公眾號的唯一標識。進入微信公眾平臺,<開發(fā)>-<基本配置> 可以看到自己公眾號AppID及AppSecret。
屏幕快照 2017-12-11 上午8.43.16 copy.png

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

如果你的頁面啟用了https,需要引入(https://res.wx.qq.com/open/js/jweixin-1.0.0.js) ,否則將無法在iOS9.0以上系統(tǒng)中成功使用JSSDK。

另外,我們看到下面有一個標簽<IP白名單>,在這里需要添加我們訪問來源的IP地址,只有白名單里面的ip地址訪問,才能獲得access_token,并成功調(diào)用微信開發(fā)接口。
這個ip地址,是服務(wù)端所在服務(wù)器的地址,可以通過服務(wù)器提供商出獲得。經(jīng)過測試,如有需要本地pc端測試,好像還需要將本地的ip加入。如果不確定ip地址的話,可以先不填。調(diào)試過程中,他會返回某ip地址未在白名單中的提示,直接把這個地址加入,就可以了。

  1. 上傳測試文件到服務(wù)器。因為我們在config中設(shè)置了debug為true,所以每次調(diào)用都可以看到反饋信息。

    登陸頁面,跳出對話框
    WechatIMG5.jpg

    說明簽名沒有被正確得到。

    調(diào)試jsjdk.php中,我們發(fā)現(xiàn)獲得access_token為空。查看httpGet函數(shù)返回信息,

private function httpGet($url) {
$curl = curl_init();
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_TIMEOUT, 500);
// 為保證第三方服務(wù)器與微信服務(wù)器之間數(shù)據(jù)傳輸?shù)陌踩?,所有微信接口采用https方式調(diào)用,必須使用下面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);

echo $res;//顯示數(shù)據(jù)
return $res;

}
首先下載新的ssl安全校驗證書cacert.pem,保持到根目錄下。

再次登錄頁面,獲得反饋
WechatIMG4.jpg

好的,現(xiàn)在把這個ip地址加入到微信公眾平臺的ip白名單中。
再次調(diào)用
WechatIMG6.jpg

顯示成功。


WechatIMG7.jpeg

截止到現(xiàn)在,這個過程就基本調(diào)試通過了。
  1. 在sample.php中加入我們要分享的信息
    wx.ready(function(){
    var shareData = {
    title: '中國船舶工業(yè)集團公司',
    desc: '中國船舶工業(yè)集團公司',
    link: 'http://www.flashtek.com.cn/cssc/index.php',
    imgUrl: 'http://www.flashtek.com.cn/cssc/img/logo.png'

};
wx.onMenuShareAppMessage(shareData);
wx.onMenuShareTimeline(shareData);
});

分享好友效果
WechatIMG9.jpeg

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容