H5微信自定義分享鏈接(設置標題+簡介+圖片)


起源:最近公司在做招募廣告的html5頁面,然后做出來后,產品提出一個問題,需要分享出去的鏈接是卡片形式,內容也要自己定義,這下就難到我了,因為是第一次遇到這種需求,果斷百度,然而,我就像大家一樣,看都看不懂,一大堆什么微信jssdk官方文檔,看得我眼花繚亂,博客上面的也大多都是php形式的解釋,也不知道怎么導入進來,然而接着去了解這個卡片分享,發現官方的分享卡片,是眾多在微信生態中傳播的html5靜態頁面的一個重點。所以我解決了這個問題之后,就來寫這個博客,希望能幫助一些初步了解這個微信自定義分享鏈接的園友。

 

產品需要做的:

1.微信認證過的公眾號:必須是經過認證的,沒有認證的或者認證過期的都不可以;

2.經過備案的域名:必須是備案過的,不然是無法使用的;

3.綁定域名:首先你需要將需要分享的網址的域名綁定到微信公眾平台上面,具體操作:先登錄微信公眾平台進入“公眾號設置”的“功能設置”里填寫“JS接口安全域名”;

 

:博主這次開發中,就遇到了第三點問題,我代碼都寫好了,后台也做好了,但是就是分享出去不是卡片形式

遇到 config:invalid url domain

 

后來發現是產品忘記綁定域名,設置白名單了。。。(域名不要加http://)

 

 

 

好,后來這個問題解決了,但是還是分享不成功,又進行一次排查,因為要在手機端上線才能看到效果,就一直上線一直改,改到下午5點,后來發現是產品appid給錯了,我TM......

 

后台需要做的:

1.后台服務器:前台頁面需要后台服務器傳過來一些配置參數,比如appId、timestamp、nonceStr、signature這幾個參數都是后台從微信公眾平台獲取到的, 需要后台進行配合;

2.獲取access_token:利用公共號APPID、APPSECRET從微信服務器獲取對應的access_token,這里是后台開發小伙伴的范圍不多做解釋;

后台需要傳的參數格式:

 

 

前端你需要做的:

1.引入js文件 :在分享的頁面需要引入一個微信官方的js文件;

<script src="https://res.wx.qq.com/open/js/jweixin-1.0.0.js"></script>

2.通過ajax獲取參數 :通過后台給你的接口,取到那些必要的參數,然后你需要把當前分享的頁面的url傳到后台去,必須動態的獲取當前頁面,而且一定要對url進行編碼,要不然會不起作用;

3.因為重復上線你手機需要清理緩存,這又是一個麻煩事,手機打開:

debugx5.qq.com

然后滑到底部,有四個清理緩存的選擇框,選擇清理就好,不會影響別的地方的緩存,無需擔心;

 

好,到這里就貼代碼了,代碼里面都特意詳細的進行了注釋:

復制代碼
$(function() {
    //對url進行編碼
    var localUrl = encodeURIComponent(location.href.split('#')[0]);
    //url傳到后台格式
    var Url = "URL=" +localUrl;
    //這幾個參數都是后台從微信公眾平台獲取到的
    var nonceStr, signature, timestamp, appId, shareUrl;
    $.ajax({
        //后台獲取參數接口
        url: "https://www.xxxxxxx.cn/user/xxxxxxxx/",
        beforeSend: function(xhr) {
            xhr.setRequestHeader("Token", getCookie("token"));
        },
        type: 'get',
        data: Url,
        success: function(data) {
            //得到參數
            var appId = JSON.parse(data).appId;
            var nonceStr = JSON.parse(data).nonceStr;
            var signature = JSON.parse(data).signature;
            var timestamp = JSON.parse(data).timestamp;
            var shareUrl = JSON.parse(data).url;
            //通過微信config接口注入配置
            wx.config({
                debug: false, // 默認為false  為true的時候是調試模式,會打印出日志
                appId: appId,
                timestamp: timestamp,
                nonceStr: nonceStr,
                signature: signature,
                jsApiList: [
                    'checkJsApi',
                    'onMenuShareTimeline',
                    'onMenuShareAppMessage',
                    'onMenuShareQQ',
                    'onMenuShareWeibo'
                ]
            });
            //配置自定義分享內容
            window.share_config = {
                'share': {
                    'imgUrl': 'https://www.xxxxxx.cn/cecerecruit/img/%E6%B5%8B%E6%B5%8B%E6%8B%9B%E5%8B%9F.png', // 這里是需要展示的圖標
                    'desc': '120秒,48項天賦解析,90分鍾專家咨詢解讀,深度剖析您的天賦人生。成為測測科技合伙人,尊享至多11項專屬超值禮遇。', // 這是分享展示的摘要
                    'title': '90%的人都認可測測科技天賦智能測評|合伙人現正招募中', // 這是分享展示卡片的標題
                    'link': shareUrl, // 這里是分享的網址
                    'success': function(rr) {
                        //console.log('成功' + JSON.stringify(rr))
                    },
                    'cancel': function(tt) {
                        //console.log('失敗' + JSON.stringify(tt));
                    }
                }
            };
            wx.ready(function() {
                wx.onMenuShareAppMessage(share_config.share); // 微信好友
                wx.onMenuShareTimeline(share_config.share); // 微信朋友圈
                wx.onMenuShareQQ(share_config.share); // QQ
            });

        },
        error: function(err) {
            
        },
    });

})
復制代碼

 

提醒:手機端還在測試階段,建議把debug改成true;然后博主做到這里,打包發給后台上線,然后驚喜的跳出config:OK;哇,那個驚喜若狂,然后果斷分享一下去測試,然后如圖:

 

 

大功告成。

總結:以后做這種事一定要耐心,發現問題要一步步去測試,只不過希望不要出現appid給錯這種粗心大意的事了,最后,有問題留言,共同加油,共同進步


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM