关于微信小程序授权,我有话说

我自己的写法,先把下面这段代码放在app.js里

 // 授权方法
  login(callback, userInfoRaw) {
    var that = this
    if (userInfoRaw.detail.errMsg == 'getUserInfo:ok') {
      let userInfo = JSON.parse(userInfoRaw.detail.rawData)
      wx.setStorageSync('user', userInfo)
      wx.login({
        success: function (res) {
          that.globalData.code = res.code
          wx.request({
            //这是后台的接口地址,用来返回openid
            url: that.data.ApiUrl+'get_userinfo',
            data: {
              iv: encodeURIComponent(userInfoRaw.detail.iv),
              encryptedData: encodeURIComponent(userInfoRaw.detail.encryptedData),
              userinfo: wx.getStorageSync('user'),
              code: that.globalData.code,
            },
            header: {
              'content-type': 'json'
            },
            success: function (res) {
              wx.setStorageSync('openid', res.data.data.openid)
              var openid = res.data.data.openid
              callback(null, userInfo, openid)
            }
          })
        }
      })
      //wx.request({}) // 将用户信息、匿名识别符发送给服务器,调用成功时执行 callback(null, res)
      try {
        wx.setStorageSync('user', userInfo)
      }
      catch (e) {
        // 处理错误
      }
      // console.log(that.globalData.userInfo)
      // callback(null, userInfo, that.globalData.code)
    } else if (userInfoRaw.detail.errMsg == 'getUserInfo:fail auth deny') {
      that.alert('需要授权才能获取您的信息')
      callback('fail to modify scope', null)
    }
  }

然后就是见证奇迹的时刻了,在你需要授权的页面写上下面这段话

  // 授权
  login(userInfoRaw) {
    var that = this
    app.login((err, user, openid) => {
      //这里面就可以得到openid了,你就可以自由的用它了,放到当前页面的data里都没有问题
    }, userInfoRaw)
  },

那就有人会问了,login(userInfoRaw)的参数从哪来呢,其实小程序有按钮是可以直接调获取用户信息的,把下面代码粘在想要授权的地方,就可以得到想要的效果了

 

你可能感兴趣的:(关于微信小程序授权,我有话说)