微信小程序登录授权处理(mpvue)

本项目使用的是mpvue(使用微信小程序原生开发一个道理)
在app.vue文件create钩子函数里:

// 主要是为了获取code
wx.login({
  success (res) {
    if (res.code) {
      // 封装的缓存方法
      that.$wxhttp.cache('code', res.code)
    } else {
      console.log('登录失败!' + res.errMsg)
    }
  }
})
// 获取用户的当前设置。本项目里判断用户是否已授权登录
wx.getSetting({
  success (res) {
    if (res.authSetting['scope.userInfo']) {
      wx.getUserInfo({
        success: function (res) {
        // 如果用户已经授权则会调用该方法
          that.$wxhttp.authSuccessReq(res)
        }
      })
    } else {
      console.error('用户没有授权')
    }
  }
})

// 从后台获取openid等参数信息
function authSuccessReq (data) {
  return new Promise((resolve, reject) => {
    if (!wx.getStorageSync('userInfo').openid) {
      wx.request({
        url:'',
        method: 'POST',
        data: {
          encryptedData: data.encryptedData,
          code: wx.getStorageSync('code'),
          iv: data.iv,
        },
        success: function (info) {
          let userInfo = data.userInfo
          。。。。。
          resolve(userInfo)
        },
        fail (res) {
          reject(res)
        }
      })
    } else {
      resolve(wx.getStorageSync('userInfo'))
    }
  })
}

如果用户还没有登录过,则

<button v-if="!auth" open-type="getUserInfo" @getuserinfo="getUserInfo">立即预约</button>
<button v-else form-type="submit">立即预约</button>

如果没有登录则用open-type=“getUserInfo” 如果已经登录过则用普通的button。auth是用来判断是否登录的
登录成功后会在getUserInfo方法中继续调用authSuccessReq方法获取openid

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值