簡單說一下,這次踩過的的坑。搞了兩天才解決。
需求是 微信分享 自定義標題,圖片,介紹,和鏈接。
網上都有相關文章,代碼也比較簡單,至于怎么配置域名,然后簽名算法,這里就不說了,網上各種語言的版本代碼都有而且都比較成熟,主要說下我踩過的坑。
所有代碼都寫好,部署到服務器上 拿起我的安卓手機,測試一切正常。
安卓分享圖片
后來在IOS上分享出來的就不能夠自定義這些信息。如圖和沒有接微信分享接口的效果是一樣的就是分享當前頁面。
IOS分享圖
開始也找不到原因,開啟微信的Debug模式 彈出的都是正確的,后來網上找了很多資料,說是圖片的大小不能超過32kb。并且要是JS安全域名下的。我也都設置好了,還是不行。
然后我就摸不著頭腦了,我以為官方的微信JS-SDK Demo(http://203.195.235.76/jssdk/) 也會有問題,結果官方的demo沒毛病,那只好一行代碼一行代碼的對比,這中間多少淚就不說了,比對到最后也沒發現有問題。
一行代碼一行代碼的排除 最后的最后的最后, 才發現原來 link 需要在JS安全域名下。
IOS分享的時候圖片的鏈接地址 和 link 都需要在 JS安全域名下并且帶http頭。
@{
ViewBag.Title = "xx夢想加油站";
Layout = null;
}
<!DOCTYPE html>
<html lang="zh-cn">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>xx夢想加油站</title>
</head>
<body>
<script src="http://res.wx.qq.com/open/js/jweixin-1.2.0.js"></script>
<script type="text/javascript">
wx.config({
debug: false,
appId: '@ViewBag.AppId',
timestamp: @ViewBag.ts,
nonceStr: '@ViewBag.noncestr',
signature: '@ViewBag.signature',
jsApiList: [
'onMenuShareTimeline',
'onMenuShareAppMessage',
]
});
wx.ready(function() {
//config信息驗證后會執行ready方法,所有接口調用都必須在config接口獲得結果之后
var sharetitle='@ViewBag.Name 正在參加浦軟夢想加油站活動。';
var sharedescript='請你為我點亮夢想,快來一起參加吧! ';
var sharelink='http://xxx.com/h5.html';
var shareimgurl='http://m.xxx.com/Content/skin/images/cover.png';
var shareData = {
title: sharetitle,
desc: sharedescript,
link:sharelink,
imgUrl:shareimgurl
};
//分享給朋友
wx.onMenuShareAppMessage({
title: sharetitle,
desc: sharedescript,
link: sharelink,
imgUrl:shareimgurl,
trigger: function (res) {
// 不要嘗試在trigger中使用ajax異步請求修改本次分享的內容,因為客戶端分享操作是一個同步操作,這時候使用ajax的回包會還沒有返回
alert('用戶點擊發送給朋友');
},
success: function (res) {
alert('已分享');
},
cancel: function (res) {
alert('已取消');
},
fail: function (res) {
alert(JSON.stringify(res));
}
});
//分享給朋友圈
wx.onMenuShareTimeline({
title: sharetitle,
link: sharelink,
desc: sharedescript,
imgUrl:shareimgurl,
trigger: function (res) {
// 不要嘗試在trigger中使用ajax異步請求修改本次分享的內容,因為客戶端分享操作是一個同步操作,這時候使用ajax的回包會還沒有返回
// alert('用戶點擊分享到朋友圈');
},
success: function (res) {
// alert('已分享');
},
cancel: function (res) {
// alert('已取消');
},
fail: function (res) {
// alert(JSON.stringify(res));
}
});
wx.onMenuShareAppMessage(shareData);
wx.onMenuShareTimeline(shareData);
});
wx.error(function(res){
// config信息驗證失敗會執行error函數,如簽名過期導致驗證失敗,具體錯誤信息可以打開config的debug模式查看,也可以在返回的res參數中查看,對于SPA可以在這里更新簽名。
alert(JSON.stringify(res));
});
</script>
</body>
</html>