微信 js-sdk 使用心得

前端配置微信 js-sdk

微信js-sdk 是微信公衆平臺面向網頁開發者提供的基於微信的網頁開發工具包,經過使用微信 js-sdk,網頁開發者,可藉助微信高效的使用 拍照、掃碼、錄音、定位等原生應用愛具備的能力。html

前端開發者使用 js-sdk 的 步驟:

  • 在微信公衆平臺綁定安全域名前端

  • 後端接口實現js-sdk配置所須要的參數web

  • 頁面實現 js-sdk 中 config 的注入配置,並實現成功失敗的處理ajax

步驟一 在微信公平臺綁定安全域名json

  • 在微信公衆平臺綁定安全域名(注意:域名的書寫要求,以及那個 txt 文件下載);
    -圖片描述後端

步驟二 引入 js 文件api

  • 文件在須要調用JS接口的頁面引入以下JS文件,(支持https):安全

  • http://res.wx.qq.com/open/js/...
    備註:支持使用 AMD/CMD 標準模塊加載方法加載微信

步驟三:經過config接口注入權限驗證配置app

//分享文案
var title = '碼客街'; // 分享標題
var desc =  '歡迎您,進駐碼客街'; // 分享描述
var link =  'http://*******.com/html/share.html';                    // 分享連接,該連接域名或路徑必須與當前頁面對應的公衆號JS安全域名一致
var imgUrl =  'http://******.com/web3/rs/img/about/about-logo.png'; // 分享圖標
var type =  '';     // 分享類型,music、video或link,不填默認爲link
var dataUrl = ''; // 若是type是music或video,則要提供數據連接,默認爲空


$.ajax({
    type: "GET",
    url:'http://*********.com/WeixinJDK/GetSignPackageJSONP',
    data: {
        url: window.location.href.split('#')[0]
    },
    dataType: "jsonp",
    success: function(result) {
        //獲取appid,timestamp,noncestr,signature等信息,須要後端小夥伴配合
        myconfig(rusult.data);
    },
    error: function() {
        alert('ajax error');
    }
});


function myconfig(data){
    //將data值寫入 wx.config
    wx.config({
        debug: true, // 開啓調試模式,調用的全部api的返回值會在客戶端alert出來,若要查看傳入的參數,能夠在pc端打開,參數信息會經過log打出,僅在pc端時纔會打印。
        appId: '', // 必填,公衆號的惟一標識
        timestamp: , // 必填,生成簽名的時間戳
        nonceStr: '', // 必填,生成簽名的隨機串
        signature: '',// 必填,簽名,見附錄1
        jsApiList: [] // 必填,須要使用的JS接口列表,全部JS接口列表見附錄2
    });

    //經過ready
    wx.ready(function(){
        // config信息驗證後會執行ready方法,全部接口調用都必須在config接口得到結果以後,config是一個客戶端的異步操做,因此若是須要在頁面加載時就調用相關接口,則須把相關接口放在ready函數中調用來確保正確執行。對於用戶觸發時才調用的接口,則能夠直接調用,不須要放在ready函數中。

        // 在wx.ready 裏面 判斷當前客戶端版本是否支持指定JS接口
        wx.checkJsApi({
            jsApiList: ['chooseImage'], // 須要檢測的JS接口列表,全部JS接口列表見附錄2,
            success: function(res) {
                // 以鍵值對的形式返回,可用的api值true,不可用爲false
                // 如:{"checkResult":{"chooseImage":true},"errMsg":"checkJsApi:ok"}

                //調用具體 api 接口
                function api();
            }
        });
    });

    wx.error(function(res){
        // config信息驗證失敗會執行error函數,如簽名過時致使驗證失敗,具體錯誤信息能夠打開config的debug模式查看,也能夠在返回的res參數中查看,對於SPA能夠在這裏更新簽名。
        alert(JSON.stringify(res));
    });
}

function api(){
    //分享給朋友
       wx.onMenuShareAppMessage({
           title: title, // 分享標題
           desc: desc, // 分享描述
           link: linkUrl, // 分享連接,該連接域名或路徑必須與當前頁面對應的公衆號JS安全域名一致
           imgUrl: imgUrl, // 分享圖標
           type: '', // 分享類型,music、video或link,不填默認爲link
           dataUrl: '', // 若是type是music或video,則要提供數據連接,默認爲空
           success: function () {
               // 用戶確認分享後執行的回調函數
           },
           cancel: function () {
               // 用戶取消分享後執行的回調函數
           }
       });

       //分享到朋友圈
       wx.onMenuShareTimeline({
           title: title, // 分享標題
           link: linkUrl, // 分享連接,該連接域名或路徑必須與當前頁面對應的公衆號JS安全域名一致
           imgUrl: imgUrl, // 分享圖標
           success: function () {
               // 用戶確認分享後執行的回調函數
           },
           cancel: function () {
               // 用戶取消分享後執行的回調函數
           }
       });

       //分享到qq
       wx.onMenuShareQQ({
           title: title, // 分享標題
           desc: desc, // 分享描述
           link: linkUrl, // 分享連接
           imgUrl: imgUrl, // 分享圖標
           success: function () {
               // 用戶確認分享後執行的回調函數
           },
           cancel: function () {
               // 用戶取消分享後執行的回調函數
           }
       });

        //分享到qq空間
       wx.onMenuShareQZone({
           title: title, // 分享標題
           desc: desc, // 分享描述
           link: linkUrl, // 分享連接
           imgUrl: imgUrl, // 分享圖標
           success: function () {
               // 用戶確認分享後執行的回調函數
           },
           cancel: function () {
               // 用戶取消分享後執行的回調函數
           }
       });

       // ············更多的api 請參見微信 js-sdk 開發文檔
}

遇到問題:

  • 配置過程當中,必定要確保 注入 config 中的參數正確

  • . 若是配置過程當中,wx.error 彈出 {'errMsg':'config:invalid url domain'}

  • 緣由:

    • js安全域名配置錯誤(去掉 http://

    • ajax 請求的接口填寫錯誤(我就是大意,寫錯了)

  • 配置中出現 {'errMsg':'config fail'}

    緣由:多半是輸入 config 的參數錯誤,請檢查 config 參數
  • 在使用 錄音 接口的時候,碰到了不少坑,等我解決完再來分享

相關文章
相關標籤/搜索