? ? ? ?最近一個(gè)項(xiàng)目原來好好的微信分享突然就不行了,分享到朋友圈沒有了文章里的縮略圖,而且鏈接地址也變成了項(xiàng)目入口地址恩急,原先這項(xiàng)目也不是我寫的掸掸,但是沒辦法有活就要干氯庆,有問題就要解決嘛。
? ? ? 網(wǎng)上找了很多資料都是說在頁面頭部放一個(gè)隱藏的img扰付,大小300*300px以上的圖堤撵,試過了,沒有任何卵用羽莺,后來總算找到一篇靠譜的博文 :http://www.cnblogs.com/lijianfu99/p/6934187.html 不能分享的原因是微信升級(jí)之后提高了安全性实昨,對(duì)于沒有接入公眾號(hào)的網(wǎng)頁分享,必須接入微信認(rèn)證公眾號(hào)盐固,具體看https://mp.weixin.qq.com/s/hAdtKl2i4ilyo9HxT1kXyw
有了前人指路一切都輕松很多荒给,主要就是用JSSDK來自定義縮略圖及自定義鏈接族跛,可直接參考官方手冊(cè)
https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421141115
? ? ? 首先你要確保公眾號(hào)相關(guān)設(shè)置:先登錄微信公眾平臺(tái)進(jìn)入“公眾號(hào)設(shè)置”的“功能設(shè)置”里填寫“JS接口安全域名”。這里要說一下公眾號(hào)必須是微信認(rèn)證過的锐墙,并且接口權(quán)限也必須有礁哄,綁定的安全域名就是你項(xiàng)目的域名。
? ? ? 接下來就是如何在tp5框架里引用JSSDK的問題了溪北,我這里的順序跟手冊(cè)上寫的不一樣桐绒,但是更便于理解,要使用微信的接口之拨,必定要先獲取你自己公眾號(hào)的一些基本信息茉继,所以這一步就是通過微信提供的JSSDK(http://demo.open.weixin.qq.com/jssdk/sample.zip)來獲取接口調(diào)用所需的參數(shù)。
將下載好的jssdk.php文件放在框架的extend或者項(xiàng)目的公共類庫蚀乔,個(gè)人比較喜歡放在common模塊下面烁竭,然后在項(xiàng)目的主控制器或者基控制器(所有控制器繼承的父控制器),調(diào)用方法也可參考下載下來的sample.php的原生php寫法吉挣,很簡單派撕,我貼一下自己的代碼:
如果采用框架別忘記命名空間,不然讀取不到類的
//微信jssdk的Config參數(shù)生成
$jssdk = new JSSDK("你自己的appId", "你自己的appSecret");
$signPackage = $jssdk->GetSignPackage();//應(yīng)該是getSignPackage睬魂,但是demo里這么調(diào)用好像也可以
$this->assign('wxJsApiParam',$signPackage);//將JSSDK拼接的簽名包賦值到模板
接下來就是在項(xiàng)目里調(diào)用API了
首先要引入js终吼,http://res.wx.qq.com/open/js/jweixin-1.2.0.js(簡書編輯器不支持js腳本標(biāo)簽,哈哈哈氯哮,防止sql注入际跪,做得有點(diǎn)過)
然后就是 通過config接口注入權(quán)限驗(yàn)證配置,微信手冊(cè)也有喉钢。我貼一下我的代碼:
wx.config({
debug: false,
appId: '{$wxJsApiParam.appId}',
timestamp: {$wxJsApiParam.timestamp},
nonceStr: '{$wxJsApiParam.nonceStr}',
signature: '{$wxJsApiParam.signature}',
jsApiList: [
'onMenuShareTimeline',
'onMenuShareAppMessage',
]
});
這個(gè)不難理解姆打,就是把剛剛后臺(tái)賦值的數(shù)據(jù)讀取到權(quán)限驗(yàn)證配置當(dāng)中,最后一個(gè)jsApiList是定義接口列表肠虽,onMenuShareTimeline和onMenuShareAppMessage可在手冊(cè)里看到是分享到朋友圈和分享給朋友的接口幔戏,當(dāng)然你也可以添加其他的接口,具體看手冊(cè)吧https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421141115
下面是我的這兩個(gè)接口的定義:
var shareIconUrl = $('#shareWxImg img').attr('src');
wx.ready(function () {
wx.onMenuShareTimeline({
title: '{$data["CompanyInfo"]["Ui_Name"]}',
link: '{$wxJsApiParam.url}',
imgUrl: shareIconUrl,
success: function () {
//分享成功回調(diào)函數(shù)
},
cancel: function () {
// 取消分享回調(diào)函數(shù)
}
});
wx.onMenuShareAppMessage({
title: '{$data["CompanyInfo"]["Ui_Name"]}', // 分享標(biāo)題
desc: '{:mb_substr($data["CompanyInfo"]["U_PType"],0,50)}', // 分享描述
link: '{$wxJsApiParam.url}', // 分享鏈接舔痕,該鏈接域名或路徑必須與當(dāng)前頁面對(duì)應(yīng)的公眾號(hào)JS安全域名一致
imgUrl: shareIconUrl, // 分享圖標(biāo)
type: '', // 分享類型,music评抚、video或link豹缀,不填默認(rèn)為link
dataUrl: '', // 如果type是music或video伯复,則要提供數(shù)據(jù)鏈接,默認(rèn)為空
success: function () {
// 用戶確認(rèn)分享后執(zhí)行的回調(diào)函數(shù)
},
cancel: function () {
// 用戶取消分享后執(zhí)行的回調(diào)函數(shù)
}
});
});
里面的數(shù)據(jù)替換成自己的站點(diǎn)信息即可
然后就是測(cè)試環(huán)節(jié)了邢笙,因?yàn)橹昂苌僮鑫⑿畔嚓P(guān)的開發(fā)啸如,都不知道微信已經(jīng)出了微信調(diào)試工具了,感謝之前那篇博客的作者指導(dǎo)氮惯,下載地址:https://mp.weixin.qq.com/debug/cgi-bin/webdebugger/download?from=mpwiki&os=x64叮雳,安裝成功后可以直接在里面測(cè)試想暗,都不需要打開手機(jī),很是方便
這是jssdk配置成功的測(cè)試結(jié)果帘不,如果成功了说莫,你可以看到分享之后的效果了(ios縮略圖有點(diǎn)問題,安卓一切正常寞焙,如果有大神知道ios上怎么解決储狭,請(qǐng)?jiān)诹粞詤^(qū)賜教)
用之前那個(gè)博主的代碼測(cè)試有點(diǎn)問題,后來還是選擇了官方手冊(cè)文檔上的方法捣郊,不過還是謝謝他的指導(dǎo)