小程序登录总结

小程序登录总结_第1张图片

Page({
  data: {},
  onLoad: function (options) {},
  onReady: function() {
    let _self = this;
    _self.handleWxCheckSession().then(() => {
      _self.handleCheckUserLogin().then(() => {
        _self.handleGetSomeInfo()
      }).catch(()=>{
        _self.handleWxUserLogin(()=>{
          _self.handleGetSomeInfo()
        })
      })
    }).catch(() => {
      _self.handleWxUserLogin(()=>{
        _self.handleGetSomeInfo()
      })
    })
  },
  onShow: function() {},
  onHide: function() {},
  onUnload: function() {},
  onReachBottom: function() {},
  onShareAppMessage: function () {},
  onPageScroll: function() {},

  /**
   * @description 通过微信自带功能检测session是否过期
   */
  handleWxCheckSession() {
    let promise = new Promise((resolve, reject) => {
      wx.checkSession({
        success(data) {
          data.errMsg === 'checkSession:ok' ? resolve() : reject();
        },
        fail(err) {
          reject();
        }
      })
    });
    return promise;
  },

  /**
   * @description 通过api接口检测第三方session是否过期
   */
  handleCheckUserLogin(){
    let _self = this;
    let promise = new Promise((resolve, reject) => {
      wx.request({
        url: '',
        data: '',
        success(result) {
          if ('logining') {
            // 登录没失效
            resolve();
          } else {
            reject()
          }
        },
        fail(error) {reject(error)}
      })
    });
    return promise;
  },

  /**
   * @description 通过wx.login,生成code,发送给后台
   */
  handleWxUserLogin(callback){
    let _self = this;
    wx.login({
      success(data) {
        let { code } = data;
        wx.request({
          url: '',
          data: {code},
          success(result) {
            if (result.success) {
              // 用户已经登录,将某个sessionid写到本地
              callback();
            }
          },
          fail(err) {
            console.error(err);
          }
        })
      }
    })
  },

  /**
   * @param { Object } obj 用户授权的信息
   * @description 通过微信自带获取授权用户信息后,将信息提交到后台存储,通过用户点击操作
   */
  handleRegisterUserInfo (obj) {
    let _self = this;
    wx.request({
      url: '',
      data: obj,
      success(result) {
        if (result.success) {
          // 用户授权后,在获取一遍用户数据
          _self.handleGetSomeInfo()
        }
      }
    })
  },

  /**
   * @description 获取一些信息
   */
  handleGetSomeInfo() {
    let _self = this;
    _self.handleGetUserInfo();
    _self.handleGetRankList();
  },

  /**
   * @description 获取存储在数据库的用户信息,头像、昵称
   */
  handleGetUserInfo() {},

  /**
   * @description 获取用户排名情况
   */
  handleGetRankList() {}
})

你可能感兴趣的:(前端)