微信小程序授权登陆详细流程

小程序授权登陆流程

1.授权 2.注册(获取用户信息) 3.登陆 4.授权获取微信绑定的手机号(判断用户身份)

WXML

//先注册再去获取用户信息比如手机号等

// 1. type类型为getUserInfo  获取用户信息
<button open-type="getUserInfo" bindgetuserinfo="joinbtn">立即加入</button>
// 2. type类型为getPhoneNumber 获取用户手机号
<button bindgetphonenumber="getPhoneNumber" openType="getPhoneNumber">保存</button>

JS

Page({
 data: {
      userInfo:"",
      name:"",
      img:"",
      openid:"",
      tokens:"",
      code:"",
      encryptedData:"",
      iv:"",
      level:"", //区分用户的角色
  },

// 授权登陆
joinbtn (e) {
  console.log(e);
  try {
    wx.setStorageSync('userInfo',e.detail.userInfo ) // 存本地以后会用到
  } catch (e) { console.log(e)}
  var ele=e.detail.userInfo;
  this.setData({
    // userInfo:ele.,
    name:ele.nickName,
    img:ele.avatarUrl
  })
  this.data.name=ele.nickName; //昵称
  this.data.img=ele.avatarUrl; //头像
    wx.login({   
     complete:(res)=>{
       console.log("登录",res);
       const code=res.code; //登陆的时候获取code在注册的时候会用到
       console.log(code);
       register(code).then(res=>{ //将code传到注册的接口上 获取到openid和tokens
        console.log(res)
        this.data.openid=res.data.openid;
        this.data.tokens=res.data.tokens;
        console.log(this.data.openid);
        console.log(this.data.tokens);
        try {
          wx.setStorageSync('openid', this.data.openid)
        } catch (e) { console.log(e)}
        try {
          wx.setStorageSync('tokens', this.data.tokens)
        } catch (e) { console.log(e)}
        // 用户信息的接口  获取(头像、昵称) 后台管理会用到
      getnikename({openid:this.data.openid,nickname:this.data.name,avatar:this.data.img})
      .then(res=>{
                     console.log(res);
                   }).catch(err=>{
                     console.log(err)
                   })
        // 获取用户信息(判断用户是否授权过)
        getpersonalmsg().then(res=>{
          if(res.code==1){
            console.log(res);
            console.log(res.data.info)
            if(res.data.info!==null){ //如果info不等于空说明用户注册过用户进来直接跳到主页
              this.setData({ show: false });
              wx.switchTab({
                url: '/pages/msg/msg',
              })
            }else if(res.data.info==null){ //如果info等于空说明用户没有注册过用户进来直接跳到注册页
              this.setData({ show: true });
             this. getPhoneNumber();
              wx.navigateTo({
                url: '/pages/detailmsg/detailmsg',
              });
            }
          }else if(res.code==0){
            wx.showToast({
              title: 'res.msg',
            })
          }
        })
      }).catch(err=>{
        console.log(err)
      });
  },
})
  },


  // 获取手机号
  getPhoneNumber(e){
    console.log(e);
    var item=e.detail;
    console.log(this.data.name)
    wx.login({  
      complete:(res)=>{
        console.log("登录",res);
        const code=res.code;
        console.log(code);
        //获取用户手机号接口
        getphone({code:res.code,encryptedData:item.encryptedData,iv:item.iv})
        .then(res=>{
          if(res.code==1){
            console.log(res.data.level);
            this.setData({
              level:res.data.level,
            })
            this.data.level=res.data.level;
            console.log(this.data.level)
            // 根据level判断用户身份跳不同的页面
            if(this.data.level==1){  
              wx.navigateTo({
                url: '/pages/detailmsg/detailmsg',
              })
            }else if(this.data.level==2){
              this.setData({ show: false });
              wx.navigateTo({
                url: '/pages/Doctorswork/Doctorswork',
              })
            }
            try {
              wx.setStorageSync('phone', res.data.mobile);
            } catch (e) { console.log(e)}
          }else if(res.code==0){
            wx.showToast({
              title: 'res.msg',
            })
          }
         
        }).catch(err=>{
          console.log(err);
        })
   },
 })  
  },
  )}

加油,每天进步一点点

  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值