微信小程序实现微信授权登录

新增getUserProfile接口

2021年4月28日24时后发布的小程序新版本,无法通过wx.getUserInfo与<button open-type="getUserInfo"/>获取用户个人信息(头像、昵称、性别与地区),将直接获取匿名数据(包括userInfo与encryptedData中的用户个人信息),获取加密后的openID与unionID数据的能力不做调整。此前发布的小程序版本不受影响,但如果要进行版本更新则需要进行适配。

https://developers.weixin.qq.com/community/develop/doc/000cacfa20ce88df04cb468bc52801

登录授权弃用

首先,需要通过button按钮来弹出授权框

<button open-type="getUserInfo" @getuserinfo="getUserInfo">微信登录</button>

getUserInfo(e) {
  //拿到用户信息

  信息包含头像,昵称
  let detail = e.detail || {}
  if (!detail.userInfo) {
    return;
  }

wx.login({

  success(res) {

    let code = res.code
    if (res.code) {//获取code,发起网络请求
      let data = {
        jsCode: res.code,
      }
      this.$api.wxLoginApi(data).then(res=>{
        if(res.code == 200){
          // console.log(res)
          if(res.result.openidList&&res.result.openidList[0]){
            uni.setStorageSync('openid', res.result.openidList[0])
          }
        if(!res.result.firstLogin){//判断是否第一次微信授权,第一次要去绑定手机
          uni.setStorageSync('userId',res.result.userId)
          uni.setStorageSync('sessionId',res.result.sessionId)
          isWorkshop()
        }else{
          const title="绑定手机"
          uni.navigateTo({
            url: `/pages/login/login?title=${title}&&type=1`
          })
         }
       }else{
        
        }
      })
    } else {
    console.log('登录失败!' + res.errMsg)
}
}
})

},

授权绑定手机号

<button open-type="getPhoneNumber" @getphonenumber="getPhoneNumber">授权手机号</button>

getPhoneNumber(e) {
  if(e.detail.encryptedData){
    let params = {
      openid:uni.getStorageSync('openid'),
      encryptDataB64: e.detail.encryptedData,
      ivB64: e.detail.iv,
    },
  this.$api.wxDecryptData(params).then(res => {//对返回的手机号信息解密,拿到手机号
    if (res.code === 200) {
      // console.log(res)
      this.form.phone=res.result.phoneNumber
    } else {
    }
    })
  }
},

用户信息授权框授权后不再出现,手机号授权授权框一直可以出现

posted @ 2021-03-26 14:58  哆啦a梦爱吃铜锣烧  阅读(521)  评论(0编辑  收藏  举报