微信小程序登录逻辑

   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("用户拒绝获取基本信息");
              }
            }
          })
      }
    }),

原文地址:https://www.cnblogs.com/wxjnew/p/9277389.html

时间: 2024-07-31 17:24:24

微信小程序登录逻辑的相关文章

SpringBoot整合微信小程序登录

1. 开发前准备 1.1 前置知识 java基础 SpringBoot简单基础知识 1.2 环境参数 开发工具:IDEA 基础环境:Maven+JDK8 所用技术:SpringBoot.lombok.mybatisplus.微信小程序 SpringBoot版本:2.1.4 1.3 涉及知识点 微信小程序登录流程 2. 微信小程序登录流程 微信小程序登录流程涉及到三个角色:小程序.开发者服务器.微信服务器 三者交互步骤如下: 第一步:小程序通过wx.login()获取code. 第二步:小程序通过

flask与微信小程序登录(后端)

开发微信小程序时,接入小程序的授权登录可以快速实现用户注册登录的步骤,是快速建立用户体系的重要一步.这篇文章将介绍 python + flask + 微信小程序实现用户快速注册登录方案(本文主要进行后端逻辑的梳理,小程序端逻辑只写了必要的部分,如有需要,请点击连接阅读官方开发文档) 官方给出的微信小程序登录时序图如下: 这个流程分为两大部分: 小程序使用 wx.login() API 获取 code,并由开发者后端服务器换取open_id 和 session_key,小程序使用 wx.getUs

微信小程序登录对接Django后端实现JWT方式验证登录

先上效果图 点击授权按钮后可以显示部分资料和头像,点击修改资料可以修改部分资料. 流程 1.使用微信小程序登录和获取用户信息Api接口 2.把Api获取的用户资料和code发送给django后端 3.通过微信接口把code换取成openid 4.后端将openid作为用户名和密码 5.后端通过JSON web token方式登录,把token和用户id传回小程序 6.小程序将token和用户id保存在storage中 下次请求需要验证用户身份的页面时,在header中加入token这个字段 微信

微信小程序--登录流程梳理

前言 微信小程序凡是需要记录用户信息都需要登录,但是也有几种不同的登录方式,但是在小程序部分的登录流程是一样的.之前就朦朦胧胧地用之前项目的逻辑改改直接用了,这个新项目要用就又结合官方文档重新梳理了下,并记录一下,好记性不如烂笔头嘛,哈哈. 几种登录流程设计 利用OpenId 创建新用户 这种方式我的理解大体上就是一种静默登录,获取用户信息之后解密用户信息并通过OpenId直接创建新用户 利用Unionid 创建新用户 这种方式的特点是可以利用Unionid实现多个小程序.公众号.已有登录体系的

微信小程序登录那些事

最近团队在开发一款小程序,都是新手,一边看文档,一边开发.在开发中会遇到各种问题,今天把小程序登录这块的流程整理下,做个记录. 小程序的登录跟平时自己APP这种登录验证还不太一样,多了一个角色,那就是微信服务器. 根据微信官方提供的登录流程时序图可以清楚的了解小程序登录需要多少个步骤,下面我们来总结下: 小程序启动,通过wx.login()获取code 开发者服务器需要提供一个登录的接口,参数就是小程序获取的code 登录接口收到code后,调用微信提供的接口进行code的验证 得到验证结果,成

微信小程序登录 .net 后端实现

1:前端获取用户凭证code 传送请求获得openId(用户唯一标识)     在页面的Onlaunch 方法中,调用wx.login 方法 https://developers.weixin.qq.com/miniprogram/dev/api/wx.login.html 这一步获取登录凭证,通过凭证调用本地后台接口,获取用户openId sessionKey等,本地后台的接口调用方法参考第四步 注意点: 1:通常我们会把用户的session_key 存取到后台的session会话中,但是在微

[转]微信小程序登录数据解密以及状态维持

本文转自:http://www.cnblogs.com/cheesebar/p/6689326.html 学习过小程序的朋友应该知道,在小程序中是不支持cookie的,借助小程序中的缓存我们也可以存储一些信息,但是对于一些比较重要的信息,我们需要通过登录状态维持来保存,同时,为了安全起见,用户的敏感信息,也是需要加密在网络上传输的. 前台,service.封装了http请求,同时封装了getSession(通过code获取服务器生成的session).getUserInfo(获取用户信息).ge

微信小程序 JS 逻辑层

丰富的API: https://developers.weixin.qq.com/miniprogram/dev/api/ 全局逻辑(app.js) 调用APP()函数,调用生命周期函数 一.生命周期函数:https://developers.weixin.qq.com/miniprogram/dev/framework/app-service/app.html App() 函数用来注册一个小程序.接受一个 object 参数,其指定小程序的生命周期函数等. 1. onLaunch : 当小程序

对于微信小程序登录的理解图

有两种获取用户信息的方案. 1.不包含敏感信息openId 的json对象(包含:nickname.avatarUrl等基本信息) 2.包含敏感信息openId的基本信息. 第一种获取方案 1.首先调用wx.login()接口 让用户授权验证,也就是我们肉眼观察到的,你是否对xxxxx授权这种信息. 2.用户成功授权后,调用wx.getUserInfo() 接口获取用户信息. 完整代码如下 wx.login({ success:function(){ wx.getUserInfo({ succe