js微信分享接口調(diào)用詳解
本文實(shí)例為大家分享了js微信分享接口調(diào)用的具體代碼,供大家參考,具體內(nèi)容如下
微信api直通車,仔細(xì)閱讀官方文檔問題都可以解決的
好吧,最近用到了,整理下發(fā)出來,就這個(gè)效果吧

1.設(shè)置js接口安全域名
這需要使用微信的jssdk,先需要在微信公眾號(hào)后臺(tái)進(jìn)行設(shè)置:公眾號(hào)設(shè)置-->功能設(shè)置-->JS接口安全域名。打開這個(gè)頁面之后你會(huì)看到下面的提示。需要先下載這個(gè)文件并上傳到指定域名的根目錄。

這個(gè)文件里面是一個(gè)字符串,從名稱看是用來校驗(yàn)用的。先上傳了這個(gè)文件,你才能保存成功。這樣你就可以使用jssdk了。
2.頁面,要從后臺(tái)獲取簽名
頁面核心代碼,用的是jweixin-1.4.0.js,最新版的說是將之前的四個(gè)接口合并成兩個(gè),不知道為什么沒起作用,所以還是用之前的四個(gè)吧
<script src="http://res.wx.qq.com/open/js/jweixin-1.4.0.js"></script>
<script>
var currurl = decodeURIComponent(location.href.split('#')[0]);
var res = ${(jsApi)!};
wx.config({
debug: false, // 開啟調(diào)試模式,調(diào)用的所有api的返回值會(huì)在客戶端alert出來,若要查看傳入的參數(shù),可以在pc端打開,參數(shù)信息會(huì)通過log打出,僅在pc端時(shí)才會(huì)打印。
appId: res.appId, // 必填,公眾號(hào)的唯一標(biāo)識(shí)
timestamp: res.timestamp, // 必填,生成簽名的時(shí)間戳
nonceStr: res.nonceStr, // 必填,生成簽名的隨機(jī)串
signature: res.signature,// 必填,簽名
jsApiList: ["checkJsApi","updateAppMessageShareData","updateTimelineShareData", "onMenuShareTimeline", "onMenuShareAppMessage", "onMenuShareQQ", "onMenuShareQZone"] // 必填,需要使用的JS接口列表
});
wx.ready(function () {
// config信息驗(yàn)證后會(huì)執(zhí)行ready方法,所有接口調(diào)用都必須在config接口獲得結(jié)果之后,config是一個(gè)客戶端的異步操作,所以如果需要在頁面加載時(shí)就調(diào)用相關(guān)接口,則須把相關(guān)接口放在ready函數(shù)中調(diào)用來確保正確執(zhí)行。對(duì)于用戶觸發(fā)時(shí)才調(diào)用的接口,則可以直接調(diào)用,不需要放在ready函數(shù)中。
wx.checkJsApi({
jsApiList : ["checkJsApi", "updateAppMessageShareData","updateTimelineShareData","onMenuShareTimeline", "onMenuShareAppMessage", "onMenuShareQQ", "onMenuShareQZone"], // 需要檢測的JS接口列表,所有JS接口列表見附錄2,
success : function(res) {
// 以鍵值對(duì)的形式返回,可用的api值true,不可用為false
// 如:{"checkResult":{"chooseImage":true},"errMsg":"checkJsApi:ok"}
// alert(res.checkResult);
// alert(res.errMsg);
}
});
//自定義“分享給朋友”及“分享到QQ”按鈕的分享內(nèi)容(1.4.0)
wx.updateAppMessageShareData({
title:"餓了么紅包", // 分享標(biāo)題
desc: "餓了么紅包描述", // 分享描述
link: currurl, // 分享鏈接,該鏈接域名或路徑必須與當(dāng)前頁面對(duì)應(yīng)的公眾號(hào)JS安全域名一致
imgUrl: ${(pic)!}, // 分享圖標(biāo)
success: function () {
// 設(shè)置成功
}
})
//自定義“分享到朋友圈”及“分享到QQ空間”按鈕的分享內(nèi)容(1.4.0)
wx.updateTimelineShareData({
title:"餓了么紅包", // 分享標(biāo)題
link: currurl, // 分享鏈接,該鏈接域名或路徑必須與當(dāng)前頁面對(duì)應(yīng)的公眾號(hào)JS安全域名一致
imgUrl: ${(pic)!},
success: function () {
// 設(shè)置成功
}
});
//朋友圈
wx.onMenuShareTimeline({
title:"餓了么紅包", // 分享標(biāo)題
link: currurl, // 分享鏈接
imgUrl: "圖片地址",
success: function (res) {
},
cancel: function (res) {
},
fail: function (res) {
alert(JSON.stringify(res));
}
});
//朋友
wx.onMenuShareAppMessage({
title:"餓了么紅包", // 分享標(biāo)題
desc: "餓了么紅包描述", // 分享描述
link: currurl, // 分享鏈接
imgUrl: "圖片地址",
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ù)
}
});
//QQ
wx.onMenuShareQQ({
title:"餓了么紅包", // 分享標(biāo)題
desc: "餓了么紅包描述", // 分享描述
link: currurl, // 分享鏈接
imgUrl: "圖片地址", // 分享圖標(biāo)
success: function () {
// 用戶確認(rèn)分享后執(zhí)行的回調(diào)函數(shù)
},
cancel: function () {
// 用戶取消分享后執(zhí)行的回調(diào)函數(shù)
}
});
//QQ空間
wx.onMenuShareQZone({
title:"餓了么紅包", // 分享標(biāo)題
desc: ${(describe)!}, // 分享描述
link: currurl, // 分享鏈接
imgUrl: "圖片地址", // 分享圖標(biāo)
success: function () {
// 用戶確認(rèn)分享后執(zhí)行的回調(diào)函數(shù)
},
cancel: function () {
// 用戶取消分享后執(zhí)行的回調(diào)函數(shù)
}
});
});
wx.error(function (res) {
// config信息驗(yàn)證失敗會(huì)執(zhí)行error函數(shù),如簽名過期導(dǎo)致驗(yàn)證失敗,具體錯(cuò)誤信息可以打開config的debug模式查看,也可以在返回的res參數(shù)中查看,對(duì)于SPA可以在這里更新簽名。
console.log("初始化wx.config失敗" + res)
});
</script>
3.后端獲取簽名,注意簽名的算法,不然就會(huì)簽名失敗啊,怎么算的,看微信附錄1-JS-SDK使用權(quán)限簽名算法
@GetMapping(value = "/test")
public String test(@RequestParam(value = "id")Long id,Model model,HttpServletRequest request ) throws WxErrorException{
String url = request.getRequestURL().toString()+"?id="+id;
WxJsapiSignature sign = wxMpService.createJsapiSignature(url);
model.addAttribute("jsApi",JsonUtils.toJson(sign));
return "對(duì)應(yīng)的頁面";
}
最后說總結(jié)下思路,1下載文件,2后臺(tái)獲取簽名(注意簽名算法),3頁面引入js調(diào)用接口。
完成!
以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
JavaScript校驗(yàn)Number(4,1)格式的數(shù)字實(shí)例代碼
這篇文章主要介紹了JavaScript校驗(yàn)Number(4,1)格式的數(shù)字實(shí)例代碼,本文實(shí)現(xiàn)思路明確代碼簡單易懂,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2017-03-03
微信小程序?qū)崿F(xiàn)多選框功能的實(shí)例代碼
這篇文章主要介紹了微信小程序?qū)崿F(xiàn)多選框功能及效果,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-06-06
PHP配置文件php.ini中打開錯(cuò)誤報(bào)告的設(shè)置方法
這篇文章主要介紹了PHP配置文件php.ini中打開錯(cuò)誤報(bào)告的設(shè)置方法,需要的朋友可以參考下2015-01-01
詳解JS如何解決大數(shù)據(jù)下滾動(dòng)頁面卡頓問題
之前遇到不分頁直接獲取到全部數(shù)據(jù),前端滾動(dòng)查看數(shù)據(jù),頁面就挺卡頓的,所以這篇文章來和大家聊聊如何解決這一問題,感興趣的小伙伴可以了解下2023-07-07
TypeScript 安裝使用及基本數(shù)據(jù)類型
這篇文章主要介紹了TypeScript 安裝使用及基本數(shù)據(jù)類型,本文分步驟給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-03-03
重構(gòu)Javascript代碼示例(重構(gòu)前后對(duì)比)
回顧頭來看看那些Javascript腳本,有寫得不太理想,過于復(fù)雜?,F(xiàn)抽取出來,重構(gòu)它們,想學(xué)習(xí)javascript重構(gòu)的朋友可以參考下啊,網(wǎng)本文可以幫助你的2013-01-01

