引用、配置微信JSDK,及網(wǎng)頁(yè)授權(quán)

工作中需要使用wxJSDK實(shí)現(xiàn)微信頁(yè)面授權(quán)登錄訪問訪問后臺(tái)數(shù)據(jù)(微信JS-SDK說(shuō)明文檔)。

以下步驟:

1.判斷頁(yè)面環(huán)境是否屬于微信瀏覽器

//init.js
/**
 * 檢測(cè)瀏覽器
 * */
function judgeBrowser() {
    if(typeof window.browser != 'object') {
        window.browser = {
            versions: function() {
                let u = navigator.userAgent;
                return {
                    trident: u.indexOf('Trident') > -1, //IE內(nèi)核
                    presto: u.indexOf('Presto') > -1, //opera內(nèi)核
                    webKit: u.indexOf('AppleWebKit') > -1, //蘋果、谷歌內(nèi)核
                    gecko: u.indexOf('Gecko') > -1 && u.indexOf('KHTML') == -1, //火狐內(nèi)核
                    mobile: !!u.match(/AppleWebKit.*Mobile.*/), //是否為移動(dòng)終端
                    ios: !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/), //ios終端
                    android: u.indexOf('Android') > -1 || u.indexOf('Adr') > -1, //android終端
                    iPhone: u.indexOf('iPhone') > -1, //是否為iPhone或者QQHD瀏覽器
                    iPad: u.indexOf('iPad') > -1, //是否iPad
                    webApp: u.indexOf('Safari') == -1, //是否web應(yīng)該程序,沒有頭部與底部
                    weixin: u.indexOf('MicroMessenger') > -1, //是否微信 (2015-01-22新增)
                    qq: u.match(/\sQQ/i) == " qq" //是否QQ
                };
            }(),
            language: (navigator.browserLanguage || navigator.language).toLowerCase()
        };
    }
}else{
  console.warn('不是微信瀏覽器,請(qǐng)?jiān)谖⑿艦g覽器打開');
}
judgeBrowser();
console.log('是否屬于微信瀏覽器',browser.versions.weixin) // true or false

如果不是微信瀏覽器,則顯示如下:

不是微信瀏覽器.png

2.如果是微信瀏覽器,引入wxJSDK ,執(zhí)行權(quán)限配置校驗(yàn)函數(shù)wx.config({})

<script src="https://res.wx.qq.com/open/js/jweixin-1.4.0.js"></script>
<script src="./js/init.js"></script>
<script>
//判斷瀏覽器
if(browser.versions.weixin){
  wx.config({
    debug: false,// 開啟調(diào)試模式,調(diào)用的所有api的返回值會(huì)在客戶端alert出來(lái),若要查看傳入的參數(shù),可以在pc端打開,參數(shù)信息會(huì)通過log打出,僅在pc端時(shí)才會(huì)打印。
    appId: '', // 必填,公眾號(hào)的唯一標(biāo)識(shí)
    timestamp: '', // 必填,生成簽名的時(shí)間戳
    nonceStr: '', // 必填,生成簽名的隨機(jī)串
    signature: '',// 必填,簽名
    jsApiList: [],// 必填,需要使用的JS接口列表
  });
  //通過ready接口處理成功驗(yàn)證
  wx.ready(function(){
    // config信息驗(yàn)證后會(huì)執(zhí)行ready方法,所有接口調(diào)用都必須在config接口獲得結(jié)果之后,config是一個(gè)客戶端的異步操作,所以如果需要在頁(yè)面加載時(shí)就調(diào)用相關(guān)接口,則須把相關(guān)接口放在ready函數(shù)中調(diào)用來(lái)確保正確執(zhí)行。對(duì)于用戶觸發(fā)時(shí)才調(diào)用的接口,則可以直接調(diào)用,不需要放在ready函數(shù)中。
    console.log('wx.ready');
  });
  //通過error接口處理失敗驗(yàn)證
  wx.error(function(res){
    // config信息驗(yàn)證失敗會(huì)執(zhí)行error函數(shù),如簽名過期導(dǎo)致驗(yàn)證失敗,具體錯(cuò)誤信息可以打開config的debug模式查看,也可以在返回的res參數(shù)中查看,對(duì)于SPA可以在這里更新簽名。
    console.log('wx.error',res);
  });
}
</script>

其中參數(shù):
appId公眾號(hào)ID,從公眾號(hào)后臺(tái)控制面板復(fù)制即可
signature簽名由后臺(tái)生成簽名提供
timestamp生成簽名的時(shí)間戳,由后臺(tái)連同簽名一起返回
nonceStr生成簽名的隨機(jī)串,由后臺(tái)連同簽名一起返回

如果wx.config()權(quán)限校驗(yàn)通過,則微信調(diào)試工具Console面板如下:

wx.config()校驗(yàn)通過.png

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容