1、注冊微信公眾號訂閱號(用企業賬戶注冊,個人無法認證)
2、在基本配置中獲取開發者AppID和AppSecret
3、在設置中的安全中心將自己的ip列為白名單
獲取ip的地址:騰訊IP分享計劃
4、獲取access_token
地址鏈接:微信公眾平臺接口調試工具
5、獲取jsapi_ticket
生成簽名之前必須先了解一下jsapi_ticket,jsapi_ticket是公眾號用于調用微信JS接口的臨時票據。正常情況下,jsapi_ticket的有效期為7200秒,通過access_token來獲取。由于獲取jsapi_ticket的api調用次數非常有限,頻繁刷新jsapi_ticket會導致api調用受限,影響自身業務,開發者必須在自己的服務全局緩存jsapi_ticket 。
(1)參考以下文檔獲取access_token(有效期7200秒,開發者必須在自己的服務全局緩存access_token):../15/54ce45d8d30b6bf6758f68d2e95bc627.html
(2)用第一步拿到的access_token 采用http GET方式請求獲得jsapi_ticket(有效期7200秒,開發者必須在自己的服務全局緩存jsapi_ticket):https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token=ACCESS_TOKEN&type=jsapi
(鏈接中ACCESS_TOKEN需要換成自己的)
示例代碼:
http://demo.open.weixin.qq.com/jssdk/sample.zip
8、前端
<script type="text/javascript" src="http://res.wx.qq.com/open/js/jweixin-1.2.0.js"></script>
在script加入下面代碼
wx.config({
debug: false, // 開啟調試模式,調用的所有api的返回值會在客戶端alert出來,若要查看傳入的參數,可以在pc端打開,參數信息會通過log打出,僅在pc端時才會打印。
appId: 'xxxxxxxx', // 必填,公眾號的唯一標識
timestamp:1414587457, // 必填,生成簽名的時間戳
nonceStr: 'Wm3WZYTPz0wzccnW', // 必填,生成簽名的隨機串
signature: 'xxxxxxxxxxxxxxxxxxxxxxxxxxxx',// 必填,簽名,見附錄1
jsApiList: [
'checkJsApi',
'onMenuShareTimeline',
'onMenuShareAppMessage',
'onMenuShareQQ',
'onMenuShareWeibo',
'onMenuShareQZone'
] // 必填,需要使用的JS接口列表,所有JS接口列表見附錄2
});
wx.ready(function(){
// config信息驗證后會執行ready方法,所有接口調用都必須在config接口獲得結果之后,config是一個客戶端的異步操作,所以如果需要在頁面加載時就調用相關接口,則須把相關接口放在ready函數中調用來確保正確執行。對于用戶觸發時才調用的接口,則可以直接調用,不需要放在ready函數中。
wx.onMenuShareTimeline({
title: 'xxxxx', // 分享標題
link: 'xxxxxxx', // 分享鏈接,該鏈接域名或路徑必須與當前頁面對應的公眾號JS安全域名一致
imgUrl: 'xxxxx', // 分享圖標
success: function () {
// 用戶確認分享后執行的回調函數
},
cancel: function () {
// 用戶取消分享后執行的回調函數
}
});
wx.onMenuShareAppMessage({
title: 'xxxx', // 分享標題
desc: 'xxxxxxxx', // 分享描述
link: 'xxxxxxxxxxxx', // 分享鏈接,該鏈接域名或路徑必須與當前頁面對應的公眾號JS安全域名一致
imgUrl: 'xxxxxxxxxxxxxxxx', // 分享圖標
type: '', // 分享類型,music、video或link,不填默認為link
dataUrl: '', // 如果type是music或video,則要提供數據鏈接,默認為空
success: function () {
// 用戶確認分享后執行的回調函數
},
cancel: function () {
// 用戶取消分享后執行的回調函數
}
});
wx.onMenuShareQQ({
title: 'xxxxxxx', // 分享標題
desc: 'xxxxxxxxxxxxxxx', // 分享描述
link: 'xxxxxxxxxxxxxxxxxxxx', // 分享鏈接
imgUrl: 'xxxxxxxxxxxxxxxxxxxxx', // 分享圖標
success: function () {
// 用戶確認分享后執行的回調函數
},
cancel: function () {
// 用戶取消分享后執行的回調函數
}
});
wx.onMenuShareQZone({
title: 'xxxxxxxxxxxx', // 分享標題
desc: 'xxxxxxxxxxxxxxxxxxxxxx', // 分享描述
link: 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx', // 分享鏈接
imgUrl: 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx', // 分享圖標
success: function () {
// 用戶確認分享后執行的回調函數
},
cancel: function () {
// 用戶取消分享后執行的回調函數
}
});
});
wx.error(function(res){
// config信息驗證失敗會執行error函數,如簽名過期導致驗證失敗,具體錯誤信息可以打開config的debug模式查看,也可以在返回的res參數中查看,對于SPA可以在這里更新簽名。
});
存在的問題:
分享給好友或分享朋友圈或分享到群的鏈接再次分享變成如下:
微信分享會根據分享的不同,為原始鏈接拼接如下參數:
對于IOS系統會自動增加如下參數:
朋友圈 from=timeline&isappinstalled=0
微信群 from=groupmessage&isappinstalled=0
好友分享 from=singlemessage&isappinstalled=0
對于安卓系統會自動添加如下參數:
朋友圈 from=timeline
微信群 from=groupmessage
好友分享 from=singlemessage
結果:標題+分享描述+縮略圖無法顯示
解決方案:
1、由于動態的URL所導致
2、獲得對應的URL簽名