zoukankan      html  css  js  c++  java
  • 微信小程序登录逻辑

       wx.getStorage({
          key: 'session_id',
          success: function(res) {
            //如果本地缓存中有session_id,则说明用户登陆过
            console.log("本地缓存中的session_id:" + res.data)
            //判断微信服务器session是否有效
            wx.checkSession({
              success: function(res) {
                console.log("处于登录态,session有效");
                //如果已经授权过了并且session有效,则直接跳转到业务页面
                wx.switchTab({
                  url: '/pages/leader/leader',
                  complete: function(res) {}
                })
              },
              fail: function(res) {
                //如果微信服务端的session已经无效,需要重新执行登录的过程
                // 登录
                wx.login({
                    success: function(res) {
                      console.log(res)
                      that.setData({
                        code: res.code
                      })
                    }
                  }),
                  // 获取用户信息
                  wx.getSetting({
                    success: res => {
                      //判断用户是否授权
                      if (res.authSetting['scope.userInfo']) {
                        console.log("用户同意获取基本信息");
                        // 已经授权,可以直接调用 getUserInfo 获取头像昵称,不会弹框
                        wx.getUserInfo({
                          lang: "zh_CN",
                          success: res => {
                            console.log("获取到的用户信息:" + res.userInfo.nickName);
                            console.log("获取到的加密信息:" + res.encryptedData);
                            console.log("获取到的code:" + that.data.code);
                            console.log("获取到的iv:" + res.iv);
                            var url = app.globalData.ApiUrl + "/KingSmall/wxlogin";
                            wx.request({
                              url: url,
                              data: {
                                code: that.data.code,
                                encryptedData: res.encryptedData,
                                iv: res.iv
                              },
                              success(res) {
                                console.log("返回的session_id:" + res.data);
                                wx.setStorage({
                                  key: 'session_id',
                                  data: res.data,
                                }),
                                  //处理成功,跳转到对应的页面
                                  wx.switchTab({
                                    url: '/pages/leader/leader',
                                    complete: function (res) { }
                                  })
    
                              }
                            })
                          }
                        })
    
                      } else {
                        console.log("用户拒绝获取基本信息");
                      }
                    }
                  })
    
              },
              complete: function(res) {},
            })
          },
          //如果获取不到本地的sessionid 则让用户重新登录
          fail: function(res) {
            console.log("获取失败的session_id:" + res.data);
            // 登录
            wx.login({
                success: function(res) {
                  console.log(res)
                  that.setData({
                    code: res.code
                  })
                }
              }),
              // 获取用户信息
              wx.getSetting({
                success: res => {
                  //判断用户是否授权
                  if (res.authSetting['scope.userInfo']) {
                    console.log("用户同意获取基本信息");
                    // 已经授权,可以直接调用 getUserInfo 获取头像昵称,不会弹框
                    wx.getUserInfo({
                      lang: "zh_CN",
                      success: res => {
                        console.log("获取到的用户信息:" + res.userInfo.nickName);
                        console.log("获取到的加密信息:" + res.encryptedData);
                        console.log("获取到的code:" + that.data.code);
                        console.log("获取到的iv:" + res.iv);
                        var url = app.globalData.ApiUrl + "/KingSmall/wxlogin";
                        wx.request({
                          url: url,
                          data: {
                            code: that.data.code,
                            encryptedData: res.encryptedData,
                            iv: res.iv
                          },
                          success(res) {
                            console.log("返回的session_id:" + res.data);
                            wx.setStorage({
                              key: 'session_id',
                              data: res.data,
                            })
                            //处理成功,跳转到对应的页面
                            wx.switchTab({
                              url: '/pages/leader/leader',
                              complete: function(res) {}
                            })
                          }
                        })
                      }
                    })
    
                  } else {
                    console.log("用户拒绝获取基本信息");
                  }
                }
              })
          }
        }),
  • 相关阅读:
    day5 元组、列表、字典和集合
    day4 字符串类型和列表类型的详细caozu
    day3 数据类型
    预习
    python基础
    计算机基础——老年人上网冲浪手册
    pycharm操作指北
    day1 计算机基础知识
    Securing a Laravel API in 20 minutes with JWTs
    Testing Api using PHPUnit Laravel
  • 原文地址:https://www.cnblogs.com/wxjnew/p/9277389.html
Copyright © 2011-2022 走看看