애플릿 인증 로그인

6712 단어
필요: 페이지를 열어 사용자의 로그인 여부를 판단하고, 로그인하지 않으면 사용자 정의 탄창으로 로그인을 알립니다. 로그인하면 사용자 정보를 보여줍니다.
1:wxml에서 사용자 정의 탄창
<view class="login" wx:if="{{!hasUserInfoStatus}}" catchtouchmove='true'>
    <view class="mask">view>
    <view class="d-login-popup">
      <text class='d-login-popup-text'> text>
      <image class='d-login-popup-img' src='../../../../assets/images/d_login_img.png'>image>
      <text class='d-login-popup-text'> text>
      <button class='cancel' bindtap='cancelUserinfo'> button>
      <button class='sure' open-type="getUserInfo" bindgetuserinfo="getUserInfo"> button>
    view>
  view>

2: 데이터 안에hasUserInfoStatus 변수는 사용자 정의 탄창을 표시할지 여부를 나타낸다
data: {
    hasUserInfoStatus: true,
}

3: onshow에서 사용자의 로그인 여부를 판단합니다.로그인, 사용자 정의 탄창 숨기기.로그인하지 않음, 사용자 정의 탄창 표시, 사용자가 단추를 누르면 권한 수여 탄창 표시를 터치합니다
onShow() {
    wx.login({
      success: res => {
        console.log('login', res)
        this.getInfo(res.code);
      }
    });
  }, 
  getInfo: function (code) {
    let _self = this;
    wx.request({
      url: api + '/api/miniProgramController/decodeUserInfo?code=' + code,
      header: {
        'content-type': 'application/json'
      },
      success: function (res) {
        let openid = res.data.openid
        let unionid = res.data.unionid
        _self.setData({
          openId: openid
        })
        app.globalData.openId = openid
        app.globalData.unionId = unionid
        wx.request({
          url: api + '/rest/v1/wxLogin/isLogin/' + openid,
          data: {},
          header: {
            'content-type': 'application/json'
          },
          method: 'POST',
          success: function (suc) {
            if (suc.data.success == true) { //  
              app.globalData.hasUserInfoStatus = true;
              _self.setData({
                hasUserInfoStatus: true
              })
              if (suc.data.data !== '') {
                app.globalData.ylUserId = suc.data.data
              }
              _self.getComInfo()
            } else { //  
              app.globalData.hasUserInfoStatus = false;
              _self.setData({
                hasUserInfoStatus: false
              })
              app.globalData.ylUserId = ''
            }
          }
        })
      }
    })
  },

4: 사용자 정의 탄창 표시, 사용자가 허용 단추를 누르면 getUserInfo 함수를 터치하고, 취소 단추를 누르면 cancelUserinfo 함수를 터치합니다.
getUserInfo: function () { 
    let _self = this;
    wx.getSetting({ //  
      success(res) {
        console.log(res)
        if (res.authSetting['scope.userInfo']) { //   ‘ ’ 
          //  ,  getUserInfo  
          wx.getUserInfo({
            success: function (res) { }
          })
          wx.navigateTo({
            url: '/pages/newLogin/newLogin?formUser=true' //  
          })
        } else { //   ‘ ’ 
          wx.switchTab({
            url: '/pages/index/index',
          })
        }
      }
    })
  },
  cancelUserinfo(){ 
    wx.switchTab({
      url: '/pages/index/index', //  
    })
  },

좋은 웹페이지 즐겨찾기