登录授权

1、检验是否登陆,获取小程序login的code

// 微信的登录,获取小程序login的code
getLoginCode(){
  wx.login({
    success: res => {
      if (res.code) {
        // 发送 res.code 到后台换取 openid, sessionKey, unionid
        //TODO,如
        this.getOpenid(res.code);
      } else {
        this.showTip('登录失败!' + res.errMsg)
      }
    },
    fail: res => {
      console.log("失败" + res.errMsg)
    },
  })
},

2、获取小程序openid, sessionKey, unionid

// 获取openid, unionid,sessionKey
getOpenid(code){
  this.request({//自己封装的请求函数
    url:"URL接口",
    data:{
      code:code
    }
  }).then(res=>{
    //TODO
  });
},

3、授权手机号

<button class="btn_item" open-type="getPhoneNumber" bindgetphonenumber="getPhoneNumber">授权手机号</button>

 

//绑定电话,解密手机号
getPhoneNumber(e) {
  //解密需要的参数
  const iv = e.detail.iv;
  const encryptedData = e.detail.encryptedData;
  if (iv == null || encryptedData == null) {
    return false
  }
  const sessionKey = this.globalData.loginfo.sessionKey
  const openid=this.globalData.loginfo.openid;
  if(openid==undefined||openid==''){
    return
  }
 
  wx.showLoading({
    title: '登录中...',
    mask: true
  })
  //验证是不是登陆状态
  wx.checkSession({
    success: (res) => {
      //解密电话  
      getPhoneNumber({encryptedData,iv,sessionKey,openid}).then(res=>{ 
        wx.hideLoading();
        if (res.code != 200) {
          this.showTip("登录失败,请重新授权!");
         //失败了可能是sessionKey过期,可以重新获取code
          this.getLoginCode();
          return;
        }
        //Todo
      }).catch(err=>{
        this.showTip('登录失败,请重试');
      })
    },
    fail: () => { //如果失败,就重新登录,并且重新获取手机号
      wx.hideLoading();
      this.showTip("登录失败...");
      this.getLoginCode();
    }
  })
},

 

sessionKey = this.globalData.loginfo.sessionKey
posted @ 2020-10-27 10:14  黄哈哈。  阅读(345)  评论(0编辑  收藏  举报