1. 程式人生 > >H5分享帶縮圖,描述,微信內分享到好友,朋友圈等

H5分享帶縮圖,描述,微信內分享到好友,朋友圈等

準備工作

  • 需要一個認證的微信公眾號,一定要確定認證
  • 在公眾號設定–>功能設定,填寫設定Js介面安全域名
    • Js安全域名是需要把微信提供的檔案,放在指定域名或者目錄下面可以訪問的。

配置資訊

  • 在獲取signature之前,需要獲取accessToken 和 對應的Ticket,這兩個方式都比較簡單,不在列舉
  • 生成簽名的方式,就在微信的例項程式碼裡面,不在贅述。

注意

  • 獲取簽名等資訊,必須通過伺服器返回,不能再前端js生成
  • 對應生成的ticket,accessToken,注意要快取,也有有效期,如果不快取,訪問量大的情況下,微信有可能封號。
  • 生成signature所需要的url必須是前端傳入的模式,不能寫死,寫死的話,微信似乎有檢測機制,不能正常的分享成功。

前端配置資訊

  • 引入微信分享的JS_SDK<script type="text/javascript" src="https://res.wx.qq.com/open/js/jweixin-1.2.0.js"></script> https://res.wx.qq.com/open/js/jweixin-1.2.0.js
    • 注意,如果自己的域名模式是https模式,要使用https模式,不然會出現mixed content block,微信js不會執行
  • JS-sdk中的方法要在獲取signature之後再執行,不然有可能會執行錯誤等,同時分享的呼叫要在wx.ready方法體裡面執行,即微信配置都okay的情況下在執行。

示例程式碼

$.get("獲取微信signature的介面", 
        {"url":location.href.split('#').toString()}).done(function (data) {
        // 注意這裡的url,一定要這樣寫,也就是動態獲取,不然也不會成功的。
            console.log(data);
            if (data.header.code == 200) {
                var wx_info = data.body.result.wx_info;
                if (wx_info.signature != null) {
                    // 配置
                    wx.config({
                        debug: false,   // 測試階段,可以寫為true,主要是為了測試是否配置成功
                        appId: wx_info.appId,
                        timestamp: wx_info.timestamp,
                        nonceStr: wx_info.nonceStr,
                        signature: wx_info.signature,
                        jsApiList: ['checkJsApi', 'onMenuShareTimeline', 'onMenuShareAppMessage', 'onMenuShareQQ', 
                            'onMenuShareQZone']
                    });

                    var title = "";
                    var desc = "";
                    // 分享的圖片,最好是正方形,不是也沒關係,但是一定是http模式,即絕對路徑,而不是伺服器路勁
                    var imgUrl = "";
                    // 這裡的地址可以寫死,也可以動態獲取,但是一定不能帶有微信分享後的引數,不然分享也是失敗的
                    var link = "";


                    // 分享給朋友、QQ、微博
                    var shareData = {
                        "imgUrl": imgUrl,
                        "title": title,
                        "desc": desc,
                        'link': link
                    };
                    // 分享到朋友圈
                    var shareToTimeline = {
                        "imgUrl": imgUrl,
                        "title": title, 
                        'link': link,
                        "desc": desc
                    }
                    wx.ready(function() {
                        wx.onMenuShareTimeline(shareToTimeline);
                        wx.onMenuShareAppMessage(shareData);
                        wx.onMenuShareQQ(shareData);
                        wx.onMenuShareQZone(shareData);

                        wx.error(function(res) {
                            alert(res.errMsg);
                        });
                    });
                }
            }
}).fail(function (msg) {
        console.log("error:" + msg);
});