微信小程序 token 过期时间后重新获取

首先先封装个公用的js

class Config{
  constructor() {

  }
}

Config.restUrl = 'https://wx.knowdao.com';

export { Config };

再从另一个封装的共用的调token的js里面传入这个模块

import { Config } from 'config.js';

class Token {
  constructor() {
    console.log(this)
    this.verifyUrl = Config.restUrl + '/api/validate/token';
    this.tokenUrl = Config.restUrl + '/api/login/get_openid';
  }

  verify() {
    var token = wx.getStorageSync('token');
    console.log(token)
    if(!token) {
      this.getTokenFromServer(token);
    }else{
      this._verifyFromServer(token);
    }
  }

  // 携带令牌去服务器校验令牌
  _verifyFromServer(token) { 
    console.log(11212)
    var that = this;
    const account = wx.getStorageSync("account")
    // console.log(token)
    // console.log(wx.getStorageSync("token"))
    // console.log(account)
    const tokenn = wx.getStorageSync("token")
    wx.request({
      url: that.verifyUrl,
      method: 'POST',
      data: {
        token: tokenn,
        account:account
      },
      success: function (res) {
        console.log(res)
        return false
        var valid = res.data.isValid;
      
        if (!valid) {
          that.getTokenFromServer();
        }
      }
    })
  }


  // 从服务器获取token
  getTokenFromServer(callback) {
    var that = this;
    wx.login({
      success: function(res) {
        let code = res.code
        wx.getUserInfo({
          lang: "zh_CN",
          success: res => {
            let userInfo = res.userInfo
            wx.request({
              url: that.tokenUrl,
              method: 'POST',
              data: {
                code: code,
                nickname: userInfo.nickName,
                gender: userInfo.gender,
                avatarUrl: userInfo.avatarUrl,
                city: userInfo.city
              },
              header: {
                "content-type": "application/x-www-form-urlencoded",
                'content-type': 'application/json'
              },
              success: function (res) {
                console.log(res)
                wx.setStorageSync('token', res.data.data.token);
                wx.setStorageSync('account', res.data.data.account);
                wx.setStorageSync('userid', res.data.data.user_id);
              }
            })
          }
        })
        
      }
    })
  }

  
}

export { Token };

最后在app.js中调用

import { Token } from 'utils/token-model.js';
var scence = 0;
App({
  onLaunch: function () {
    var token = new Token();
    token.verify();
    // token.changlink("wss://wx.knowdao.com/system");
  },

 


  onShow: function () {

  },
  onHide: function () {
    this.globalData.scence = 1
    wx.setStorageSync('scence', this.globalData.scence)
  },


  globalData: {
    account: '',
    stroge: 0,
    openid: 0,
    userInfo: null,
    times: null,
    urls: 'https://wx.knowdao.com',
    urlst: 'http://test.knowdao.com',
    token: ''
  }
})

你可能感兴趣的:(小程序)