WeChatアプレット登録許可

26922 ワード

WeChatアプレット登録許可
私達はプロジェクトの中で、登録して、授権するページ、すべてtoken値を伝えなければなりません.一般商品詳細ページの商品コレクションは、ショッピングカートに参加します.ショッピングカートのページは全部tokenを伝えなければなりません.トムは何ですかtokenは、フロントエンド認証の一態様であり、tokenはバックエンドから生成され、時効性がある.WeChatアプレットはどのように登録して権限を授けて、tokenの第一歩をもらいます.登録プロセスの先端->バックエンド->テンセントサーバwx.login->wx.request->バックエンド->テンセントサーバのWeChatアプレットは公式サイトに登録します.
https://developers.weixin.qq.com/miniprogram/dev/api/open-api/login/wx.login.html
第二ステップ:具体的に登録を実現する-->登録するかどうかを検出する——>登録していない場合は、まずユーザー情報を取得して登録する(会社データベースに書き込む)->登録すると、登録弾枠をテンプレートにカプセル化し、参照を行います.まず、要求インターフェースファイルをカプセル化します.
var API_BASE_URL = 'https://api.it120.cc'
var subDomain = 'jbn1995'   //    
let request = (url, needSubDomain, method, data) => {
     
  const _url = API_BASE_URL + (needSubDomain ? '/' + subDomain : '') + url
  return new Promise((resolve, reject) => {
     
    wx.request({
     
      url: _url,
      method: method,
      data: data,
      header: {
     
        'Content-Type': 'application/x-www-form-urlencoded'
      },
      success(request) {
     
        resolve(request.data)
      },
      fail(error) {
     
        reject(error)
      },
      complete(aaa) {
     
        //     
      }
    })
  })
}

/**
 *     promise  finally  ,     
 */
Promise.prototype.finally = function (callback) {
     
  var Promise = this.constructor;
  return this.then(
    function (value) {
     
      Promise.resolve(callback()).then(
        function () {
     
          return value;
        }
      );
    },
    function (reason) {
     
      Promise.resolve(callback()).then(
        function () {
     
          throw reason;
        }
      );
    }
  );
}
具体的にはステップ1を実現します.パッケージの登録テンプレートの「許可」ボタンをクリックして、processLogin方法を実行します.
<button class="jbn_login" bindgetuserinfo="processLogin" open-type="getUserInfo">  button>

processLogin方法:
const WXAPI = require('apifm-wxapi');
const index = require('../../utils/index.js')
  processLogin(e) {
     
    console.log(e.detail.userInfo)
    if (!e.detail.userInfo) {
     
      wx.showToast({
     
        title: '   ',
        icon: "none"
      })
      return 
    }
    //    userinfo ,   register    
    index.register(this)
  },
2.userInfoがあれば、register登録方法を呼び出し、登録によってテンセント情報を会社のデータベースに書き込むには3つのパラメータが必要です.
  • iv暗号化値
  • code
  • encryptData暗号化データ
  • async function register(page) {
         
      let _this = this;
      wx.login({
         
        success: function (res) {
         
          let code = res.code; //           code   ,          
          wx.getUserInfo({
         
            success: function (res) {
         
              let iv = res.iv;
              let encryptedData = res.encryptedData;
              let referrer = '' //    
              let referrer_storge = wx.getStorageSync('referrer');
              if (referrer_storge) {
         
                referrer = referrer_storge;
              }
              //           
              WXAPI.register_complex({
         
                code: code,
                encryptedData: encryptedData,
                iv: iv,
                referrer: referrer
              }).then(function (res) {
         
                console.log(res)
                _this.login(page);
              })
            }
          })
        }
      })
    }
    
    3.登録されたloginメソッドを実行し、ログインしてtokenを取得する.
    async function login(page) {
         
      const _this = this
      wx.login({
         
        success: function (res) {
         
          WXAPI.login_wx(res.code).then(function (res) {
         
            if (res.code == 10000) {
         
              //    
              _this.register(page)
              return;
            }
            if (res.code != 0) {
         
              //     
              wx.showModal({
         
                title: '    ',
                content: res.msg,
                showCancel: false
              })
              return;
            }
            wx.setStorageSync('token', res.data.token)
            wx.setStorageSync('uid', res.data.uid)
            if (page) {
         
              page.onShow()
            }
          })
        }
      })
    }
    
    
    4.登録状態とtokenが期限切れかどうかを検出する
    //  token    
    //      (      )
    async function checkSession(){
         
      return new Promise((resolve, reject) => {
         
          //        
        wx.checkSession({
         
          success() {
         
            return resolve(true)
          },
          fail() {
         
            return resolve(false)
          }
        })
      })
    }
    //         ,  token          true  false
    
    // app.js onload      index.checkHasLogined  ,    
    
    async function checkHasLogined() {
         
      //       token
      const token = wx.getStorageSync('token')
      //    token,    false
      if (!token) {
         
        return false
      }
    
      //       
      /**
       *          session_key    ,       session_key    
       */
      const loggined = await checkSession()
    
      //       ,   token,   false
      if (!loggined) {
         
        wx.removeStorageSync('token')
        return false
      }
    
      //    token    
      const checkTokenRes = await WXAPI.checkToken(token)
    
      //    token  ,  token   false
      if (checkTokenRes.code != 0) {
         
        wx.removeStorageSync('token')
        return false
      }
      
      //   token    ,             true
      return true
    }
    
    module.exports = {
         
      login: login,
      register: register,
      checkSession:checkSession,
      checkHasLogined:checkHasLogined
    }