小程序3——小程序的授权

小程序的第一次授权发生在 app.js 的 onLaunch 方法 中

App({
  onLaunch: function () {
    //调用API从本地缓存中获取数据
    var logs = wx.getStorageSync('logs') || []
    logs.unshift(Date.now())
    wx.setStorageSync('logs', logs)
  },
  getUserInfo: function (cb) {
    var that = this
    if (this.globalData.userInfo) {
      typeof cb == "function" && cb(this.globalData.userInfo)
    } else {
      //调用登录接口
      wx.login({
        success: function (loginCode) {
          // 这里会跳出弹框,获取用户信息
          wx.getUserInfo({
            success: function (res) {// 第一次允许授权
              that.globalData.userInfo = res.userInfo // 获取用户信息,赋给全局变量
              typeof cb == "function" && cb(that.globalData.userInfo)
            },
            fail: function (res) {// 第一次拒绝授权
            }
          })
        }
      })
    }
  },
  globalData: {
    userInfo: null
  }
})

如果拒绝授权,就获取不到userInfo,但是之后有需要使用userInfo中的信息,这时候就需要 wx.openSetting() 再次唤醒用户授权

wx.openSetting({// 调起用户设置
  success: function (res) {
    res.authSetting = {
      "scope.userInfo": true,
      "scope.userLocation": true
    }
    if (res.authSetting["scope.userInfo"]) {// 第二次同意授权
      wx.getUserInfo({
        success: function (res) {
          // 保存用户信息
          that.globalData.userInfo = res.userInfo
        }
      })
    } else {// 第二次拒绝授权
      // 进行处理
    }
  },
  fail: function (res) {
  }
})

你可能感兴趣的:(小程序3——小程序的授权)