<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      H5與企業微信jssdk集成

      H5與企業微信jssdk集成

      一、公眾號設置

      注冊企業微信,在應用與小程序欄目中,設置可信域名,配置公眾號菜單。可信域名不得不說下,在最初開發時,認為設置并驗證后,微信認證接口會實現跨域請求,其實并沒有。所以全在H5端還得配合服務端完成票據獲取等操作。

      二、開發步驟

      1. 獲取accesstoken
        接口地址 https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=ID&corpsecret=SECRET , 獲取到的token的有效時間為2小時
        H5不能直接訪問,需要服務端通過代理訪問

        //author herbert QQ:464884492
        getAccessToken() {
        // 判斷是否緩存有
        return new Promise((resolve, reject) => {
        var access_token = localStorage.getItem("accessToken");
        var expires = localStorage.getItem("expires_accessToken");
        if (expires > new Date().getTime() - 2000) {
        resolve(access_token);
        return;
        }
        let accessTokenUrl = 'https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=' + this.groupId + "&corpsecret=" + this.secretId;
        
        // fetch(accessTokenUrl, { method: "GET" })
        fetch(this.porxyUrl, {
        method: "POST",
        body: JSON.stringify({
        method: "GET",
        url: accessTokenUrl
        })
        }).then(resp => {
        return resp.json()
        }).then(data => {
        if (data.errcode == 0) {
        //保存本次獲取的accessToken
        localStorage.setItem("accessToken", data.access_token);
        localStorage.setItem("expires_accessToken", new Date().getTime() + data.expires_in * 1000);
        resolve(data.access_token);
        }
        }).catch(data => {
        reject();
        })
        });
        },
        View Code
      1. 獲取ticket

        使用上一步驟獲取到的access_token獲取ticket,接口地址https://qyapi.weixin.qq.com/cgi-bin/get_jsapi_ticket?access_token=ACCESS_TOKEN
        H5不能直接訪問,需要服務端通過代理訪問

        //author herbert QQ:464884492
        getTicket() {
        return new Promise((resolve, reject) => {
        var ticket = localStorage.getItem("ticket");
        var expires = localStorage.getItem("expires_ticket");
        if (expires > new Date().getTime() - 2000) {
        resolve(ticket);
        return;
        }
        let ticketUrl = "https://qyapi.weixin.qq.com/cgi-bin/get_jsapi_ticket?access_token=" + localStorage.getItem("accessToken");
        
        //fetch(ticketUrl, { method: "GET" })
        fetch(this.porxyUrl, {
        method: "POST",
        body: JSON.stringify({
        method: "GET",
        url: ticketUrl
        })
        }).then(resp => {
        return resp.json()
        }).then(data => {
        if (data.errcode == 0) {
        //保存本次獲取的accessToken
        localStorage.setItem("ticket", data.ticket);
        localStorage.setItem("expires_ticket", new Date().getTime() + data.expires_in * 1000);
        resolve(data.ticket);
        }
        }).catch(data => {
        reject();
        })
        });
        },
        View Code
      1. 生成簽名
        文檔地址 https://work.weixin.qq.com/api/doc#90000/90136/90506
        需要將參數構造如下格式JSAPITICKET&noncestr=NONCESTR×tamp=TIMESTAMP&url=URL,然后做SHA1算法獲取字符串哈希值。其中NONCESTR是一個隨機字符串,URL不能包含#以及后邊的部分

        //author herbert QQ:464884492
        getSignature(timestamp, ticket) {
        let url = window.location.href.split("#")[0];
        let jsapi_ticket = "jsapi_ticket=" + ticket + "&noncestr=" + timestamp + "×tamp=" + timestamp.substr(0, 10) + "&url=" + url;
        this.printStatuInfo("簽名原始信息:" + jsapi_ticket);
        let sha1Str = new jsSHA(decodeURIComponent(jsapi_ticket), "TEXT");
        return sha1Str.getHash("SHA-1", "HEX");
        }
        View Code
      1. 初始微信配置信息
        根據前邊幾個步驟獲取的參數,初始微信配置信息

        //author herbert QQ:464884492
        wx.config({
        beta: true,// 必須這么寫,否則wx.invoke調用形式的jsapi會有問題
        debug: false, // 開啟調試模式,調用的所有api的返回值會在客戶端alert出來,若要查看傳入的參數,可以在pc端打開,參數信息會通過log打出,僅在pc端時才會打印。
        appId: wxUtils.groupId, // 必填,企業微信的corpID
        timestamp: timestamp.substr(0, 10), // 必填,生成簽名的時間戳
        nonceStr: timestamp, // 必填,生成簽名的隨機串
        signature: sig,// 必填,簽名,見附錄1
        jsApiList: ["scanQRCode"] // 必填,需要使用的JS接口列表,所有JS接口列表見附錄2
        });
        View Code
      1. 調用api
        初始完成后,需要立即調用api需要在 wx.ready函數中注冊回調函數,如果是不立即調用可以忽略。以下為調用微信掃一掃功能

        //author herbert QQ:464884492
        wx.scanQRCode({
        desc: 'scanQRCode desc',
        needResult: 1, // 默認為0,掃描結果由企業微信處理,1則直接返回掃描結果,
        scanType: ["qrCode", "barCode"], // 可以指定掃二維碼還是一維碼,默認二者都有
        success: function (res) {
        // 回調
        wxUtils.printStatuInfo("掃描信息:" + JSON.stringify(res));
        lblCostTime.innerText = "單次掃碼總共花費:【" + (new Date().getTime() - timeStar) + "】ms";
        },
        error: function (res) {
        if (res.errMsg.indexOf('function_not_exist') > 0) {
        alert('版本過低請升級')
        }
        }
        });
        View Code

      三、總結

      H5集成微信JSSDK功能雖然簡單,但是該有的步驟一個都不能少。在最初開發中遇到了以下幾個問題:

      1. 獲取token與ticket存在跨域問題,需要配置一個代理完成

      2. 有時生成的簽名與官方有差別,官方提供了一個測試地址https://work.weixin.qq.com/api/jsapisign

      有喜歡聊技術朋友也歡迎入群,若二維碼失效可加我微信回復**前端**

      posted @ 2019-01-29 15:06  _herbert  閱讀(16143)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 久久国产国内精品国语对白| 性无码专区无码| 欧美性猛交xxxx乱大交极品| 欧美一本大道香蕉综合视频| 亚洲av第三区国产精品| 不卡在线一区二区三区视频| 国产精品亚洲片在线观看麻豆| 黑人大战欲求不满人妻| 日韩在线视频网| 浴室人妻的情欲hd三级国产| 麻豆果冻传媒2021精品传媒一区| 人妻无码中文字幕免费视频蜜桃 | 婷婷国产亚洲性色av网站| 凸凹人妻人人澡人人添| 美女内射福利大全在线看| 变态另类视频一区二区三区| 亚洲第一香蕉视频啪啪爽| 亚洲www永久成人网站| 久久大香线蕉国产精品免费| 日韩高清在线亚洲专区不卡| 国产成人精品手机在线观看| 国产精品线在线精品| 在线播放亚洲成人av| 亚洲国产中文字幕在线视频综合| 国产精品天天狠天天看| 亚洲欧美综合中文| 欧美乱码卡一卡二卡四卡免费| 亚洲欧美中文日韩V日本| 国产精品久久久国产盗摄| 超碰成人人人做人人爽| 国产美女永久免费无遮挡| 无码人妻斩一区二区三区| 风流老熟女一区二区三区| 大肉大捧一进一出好爽视频mba| 日韩一区二区三区精彩视频 | 男受被做哭激烈娇喘gv视频| 国产又色又爽又黄的视频在线| 国产偷国产偷亚洲高清日韩| 新久久国产色av免费看| 婷婷国产亚洲性色av网站| 精品国产一区av天美传媒|