用户进入小程序后,先进行登录判断-->未登录则跳转去登录,点击登录时,弹出授权窗口,保存登录/授权的信息,返回首页拿到个人信息

Login.js

Page({
  data: {
    userInfo:[],//用户信息
    flag:true,//显示判断
  },
  tologin(){
  wx.navigateTo({
    url: '/pages/index/index',//跳转到index页点击登录
  })
    },
  onShow(){
    let that = this //==微信getSetting接口里this用不了==
    
    wx.checkSession({
      success() {//先判断时候是否登录,登录了再进行授权
        //session_key 未过期,5分钟
        wx.getSetting({
          success(res) {
//在跳转到index页面时,授权登录成功后,我把用户信息存入了storage中
            if (res.authSetting['scope.userInfo']) {
              //已经授权  
              console.log('已经授权')
              let wxInfo = wx.getStorageSync('userInfo') || {} //缓存中的信息
              if (wxInfo.nickName) {//如果有用户名,证明缓存有信息
                console.log(wxInfo)
                that.setData({
                  userInfo: wxInfo,//取缓存中的信息
                  flag: false
                })
              } else { //缓存中无信息,则直接获取用户信息
                wx.getUserInfo({
                  success(res) {
                    that.setData({
                      userInfo: res.userInfo
                    })
                  }
                })
              }}
            else {//未授权
              console.log('未授权')
              wx.showToast({
                title: '请去登录0',
              })  }}
               })
             },    
      fail() {//未登录
        // session_key 已经失效,需要重新执行登录流程
   // wx.login() //重新登录
        wx.showToast({
          title: '请去登录1',
             }
            })
           }
         })
P.S 有点乱,23333

逻辑还是通的,再梳理下

先判断session是否登录,

  • 登录了->查看是否授权->授权了->拿到信息
  • 登录了->未授权->去授权,把信息存入缓存
  • 未登录->去登录/授权

index.wxml

<view>

<button  open-type="getUserInfo" bindgetuserinfo="getuserInfo">授权</button>
<!--授权/登录按钮,点击弹出授权框并记录登录信息 -->
</view>

index.js

Page({
  data: {  
  },
  getuserInfo(e){
     console.log(e)
if(e.detail.userInfo){
wx.showToast({
  title: '授权成功,2秒后跳转',
  duration:2000,
  success(res){
    //进行微信登录
    wx.login()
wx.setStorageSync('userInfo', e.detail.userInfo)//将用户信息同步存入本地storage
  }
})
  setTimeout(()=>{
    wx.navigateBack({
      url: '/pages/login/login',
      delta:1
    })
  },2000) //2秒后跳会login页面
} }
})

爬。