藍(lán)暢首頁(yè) >> 動(dòng)態(tài)
微信H5開(kāi)發(fā)分享添加圖片 標(biāo)題 描述的方法
時(shí)間:2019-08-28 02:05:16 | 來(lái)源:
在微信里不是所有的網(wǎng)頁(yè)都可以按照微信友好的分享形式分享的,對(duì)于一般的網(wǎng)頁(yè)來(lái)說(shuō)(如非被微信屏蔽掉)是可以分享傳播的,但僅限于分享轉(zhuǎn)發(fā)(就是默認(rèn)的沒(méi)圖片 默認(rèn)標(biāo)題 鏈接顯示)
如果想要更好看,自定義標(biāo)題 圖片 描述,可以。必須要微信認(rèn)證過(guò),加到自己的白名單里就可以了 說(shuō)白點(diǎn)就是要掏錢(qián)購(gòu)買(mǎi)公眾號(hào),在公眾號(hào)里綁定Js安全域名。
1 綁定域名
先登錄微信公眾平臺(tái)進(jìn)入“公眾號(hào)設(shè)置”的“功能設(shè)置”里填寫(xiě)“JS接口安全域名”。
備注:登錄后可在“開(kāi)發(fā)者中心”查看對(duì)應(yīng)的接口權(quán)限
2 引入js文件
在需要調(diào)用JS接口的頁(yè)面引入如下JS文件,(支持https):http://res.wx.qq.com/open/js/jweixin-1.4.0.js
如果是和我一樣是Vue的在 index.html 文件中的引入
<scripttype="text/javascript"src="https://res.wx.qq.com/open/js/jweixin-1.3.2.js"></script>
3 通過(guò)config接口注入權(quán)限驗(yàn)證配置
所有需要使用JS-SDK的頁(yè)面必須先注入配置信息,否則將無(wú)法調(diào)用(同一個(gè)url僅需調(diào)用一次,對(duì)于變化url的SPA的web app可在每次url變化時(shí)進(jìn)行調(diào)用)
也就是說(shuō)如果你所分享的是多頁(yè)面的并且都想讓別人從H5 入口頁(yè)面進(jìn)入那么你只需要進(jìn)入時(shí)配置一次信息就可以了,并不需要每個(gè)頁(yè)面配置一次.
1 首先你需要從后臺(tái)獲取分享配置信息
你需要上傳你要分享的的網(wǎng)頁(yè)鏈接的 # 以前的
對(duì)當(dāng)前頁(yè)面鏈接以# 切割獲取# 以前部分進(jìn)行編碼(后臺(tái)需要相應(yīng)的解碼)
var localUrl = encodeURIComponent(location.href.split('#')[0])
然后傳給后臺(tái)獲取配置信息。(因?yàn)楹灻歉鶕?jù)你當(dāng)前的分享鏈接 和時(shí)間戳生成的),其實(shí)這樣我們分享出去的鏈接是被微信加過(guò)簽名參數(shù)的鏈接,和我們看的鏈接有點(diǎn)不一樣了
httpGet('xforh5/service/sys/wechat/js/config?url=' + localUrl, {}).then(response => { //在這里獲取到配置信息 進(jìn)行配置 }
獲取回來(lái)的配置信息
{
"status": 0,
"result": {
"appId": "wx9e3d362372762cc1",
"timestamp": 1563269390,
"nonStr": "u1n8BylqEcBBlkZ7",
"signature": "72a46eac7b1505e51b148b0949f1f8e90e5ef9ab"
}
}
獲取到配置信息后就已完成大半了,接下來(lái)就要用的引入的微信 JS Api
wx.config({
})
wx.config({ debug: false, //默認(rèn)為false 為true的時(shí)候是調(diào)試模式,開(kāi)啟調(diào)試模式,調(diào)用的所有api的返回值會(huì)在客戶端alert出 appId: appId,//必填,公眾號(hào)的唯一標(biāo)識(shí) timestamp: timestamp,// 必填,生成簽名的時(shí)間戳 nonceStr: nonStr,// 必填,生成簽名的隨機(jī)串 signature: signature,// 必填,簽名// 必填,需要使用的JS接口列表 jsApiList: [ 'checkJsApi', 'onMenuShareTimeline', 'onMenuShareAppMessage', 'onMenuShareQQ', 'onMenuShareWeibo', 'onMenuShareQZone', 'updateAppMessageShareData', 'updateTimelineShareData', ], });
需要的JS接口列表 根據(jù)公司分享需要選擇接口
wx.ready(function () {
})
上面 config信息驗(yàn)證后會(huì)執(zhí)行ready方法,所有接口調(diào)用都必須在config接口獲得結(jié)果之后,config是一個(gè)客戶端的異步操作,所以如果需要在頁(yè)面加載時(shí)就調(diào)用相關(guān)接口,則須把相關(guān)接口放在ready函數(shù)中調(diào)用來(lái)確保正確執(zhí)行。對(duì)于用戶觸發(fā)時(shí)才調(diào)用的接口,則可以直接調(diào)用,不需要放在ready函數(shù)中。
wx.ready(function () { wx.onMenuShareAppMessage(window.share_config.share); // 微信好友 wx.onMenuShareTimeline(window.share_config.share); // 微信朋友圈 wx.onMenuShareQQ(window.share_config.share); // QQ wx.updateAppMessageShareData(window.share_config.share); wx.updateTimelineShareData(window.share_config.share); });
window.share_config.share 掛載的分享的配置信息
//配置自定義分享內(nèi)容
window.share_config = {
share: {
title:自定義標(biāo)題
, // 這是分享展示卡片的標(biāo)題
desc:自定義描述
, // 這是分享展示的摘要
link:要分享的鏈接
, // 這里是分享的網(wǎng)址
imgUrl:右下角顯示圖標(biāo)
, // 這里是需要展示的圖標(biāo)
success: function (rr) {分享成功回調(diào) 可以在這兒加 alert 打印 便于調(diào)試
console.log('成功' + JSON.stringify(rr))
},
cancel: function (tt) {分享失敗回調(diào) 可以在這兒加 alert 打印 便于調(diào)試
console.log('失敗' + JSON.stringify(tt));
}
}
};
wx.error(function (res) {
})
在error 函數(shù)中可獲取的錯(cuò)誤信息,尤其是配置信息的錯(cuò)誤,因?yàn)樾枰扰渲门渲眯畔⑷缓笪⑿膨?yàn)證,驗(yàn)證通過(guò)后再調(diào)用 wx.ready() 里的分享配置信息(其實(shí)驗(yàn)證不通過(guò)也會(huì)走 應(yīng)該是異步的)
所以在這里看錯(cuò)誤信息很重要 可以加 alert 當(dāng)然如果是調(diào)試模式它自己也會(huì)跳出alert 提示
注意
發(fā)生錯(cuò)誤信息檢查
1 公眾號(hào) appid是否綁對(duì)了
2 安全域名是否改了
3 就是取配置信息的時(shí)候是否取到并且上傳對(duì)了(我就是以為對(duì)著api字段就沒(méi)事兒,結(jié)果有個(gè)字段和后臺(tái)傳過(guò)來(lái)的不一致然后一直配置信息失敗 提示 invalid signature)
最后附上完整分享函數(shù) 只需要在你獲取到需要分享的必要信息在調(diào)用(記得修改里面的參數(shù))
share() { //對(duì)url 進(jìn)行編碼var localUrl = encodeURIComponent(location.href.split('#')[0]);//// //url傳到后臺(tái)的格式// var url = 'URL=' + localUrl;// //這幾個(gè)參數(shù)都是后臺(tái)從微信公眾平臺(tái)獲取到的// var nonceStr,signature,timestamp,appId,shareUrl;//+ this.$route.query.viewidlet currentUrl = location.href httpGet('xforh5/service/sys/wechat/js/config?url=' + localUrl, {}).then(response => { const {appId, nonStr, signature, timestamp} = response.result //通過(guò)微信config接口注入配置 wx.config({ debug: false, //默認(rèn)為false 為true的時(shí)候是調(diào)試模式,會(huì)打印出日志 appId: appId, timestamp: timestamp, nonceStr: nonStr, signature: signature, jsApiList: [ 'checkJsApi', 'onMenuShareTimeline', 'onMenuShareAppMessage', 'onMenuShareQQ', 'onMenuShareWeibo', 'onMenuShareQZone', 'updateAppMessageShareData', 'updateTimelineShareData', ], }); //配置自定義分享內(nèi)容window.share_config = { share: { title: `自定義標(biāo)題`, // 這是分享展示卡片的標(biāo)題 desc: `自定義描述`, // 這是分享展示的摘要 link: `要分享的鏈接`, // 這里是分享的網(wǎng)址 imgUrl: `右下角顯示圖標(biāo)`, // 這里是需要展示的圖標(biāo) success: function (rr) { ` 分享成功回調(diào) 可以在這兒加 alert 打印 便于調(diào)試`console.log('成功' + JSON.stringify(rr)) }, cancel: function (tt) { ` 分享失敗回調(diào) 可以在這兒加 alert 打印 便于調(diào)試`console.log('失敗' + JSON.stringify(tt)); } } }; // config wx.ready(function () { wx.onMenuShareAppMessage(window.share_config.share); // 微信好友 wx.onMenuShareTimeline(window.share_config.share); // 微信朋友圈 wx.onMenuShareQQ(window.share_config.share); // QQ wx.updateAppMessageShareData(window.share_config.share); wx.updateTimelineShareData(window.share_config.share); }); wx.error(function (res) { }); }); }
藍(lán)暢信息技術(shù)有限公司成功為多家世界財(cái)富500強(qiáng)企業(yè)以及其他著名品牌提供優(yōu)質(zhì)服務(wù),是您靠譜的互聯(lián)網(wǎng)開(kāi)發(fā)供應(yīng)商。
服務(wù)客戶遍及北京、上海、杭州、深圳、廣州、天津、青島、南京、寧波、蘇州、無(wú)錫、廈門(mén)、重慶、西安等大中型城市及地區(qū) 主要業(yè)務(wù):H5開(kāi)發(fā),H5設(shè)計(jì),H5外包,微信開(kāi)發(fā)外包,H5商城開(kāi)發(fā),小程序商城開(kāi)發(fā),網(wǎng)站開(kāi)發(fā)外包,H5游戲開(kāi)發(fā),小程序開(kāi)發(fā)外包,小程序設(shè)計(jì)、APP開(kāi)發(fā)外包,UI設(shè)計(jì),視頻后期制作等
微信開(kāi)發(fā)解決方案:醫(yī)藥原料貿(mào)易中的加密訂單系統(tǒng)如何保護(hù)客戶采購(gòu)隱私
微信小程序如何重塑會(huì)展活動(dòng)管理?展商名錄與觀眾預(yù)約的智慧化解決方案
微信開(kāi)發(fā)公司:微信積分系統(tǒng)如何助力企業(yè)實(shí)現(xiàn)綠色采購(gòu)轉(zhuǎn)型?
微信開(kāi)發(fā)公司:食品添加劑企業(yè)如何借力企業(yè)微信社群打造行業(yè)認(rèn)證影響力?
企業(yè)微信對(duì)接庫(kù)存系統(tǒng):汽配經(jīng)銷商的區(qū)域代理管理智能化升級(jí)介紹
微信開(kāi)發(fā)賦能飼料原料批發(fā),自動(dòng)化報(bào)價(jià)系統(tǒng)如何破解大宗交易定價(jià)難題?