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

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

  1. [转]微信小程序登录逻辑梳理

    本文转自:http://www.jianshu.com/p/d9996cafdb31 官方文档 文档相关地址: 用户登录 获取用户数据 用户数据的签名验证和加解密                   ...

  2. ASP.NET WebAPI 双向token实现对接小程序登录逻辑

    最近在学习用asp.net webapi搭建小程序的后台服务,因为基于小程序端和后台二者的通信,不像OAuth(开放授权),存在第三方应用.所以这个token是双向的,一个是对用户的,一个是对接口的. ...

  3. 基于Shiro,JWT实现微信小程序登录完整例子

    小程序官方流程图如下,官方地址 : https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/login.html ...

  4. 全栈项目|小书架|微信小程序-登录及token鉴权

    小程序登录 之前也写过微信小程序登录的相关文章: 微信小程序~新版授权用户登录例子 微信小程序-携带Token无感知登录的网络请求方案 微信小程序开通云开发并利用云函数获取Openid 也可以通过官方 ...

  5. Flask与微信小程序登录(后端)

    开发微信小程序时,接入小程序的授权登录可以快速实现用户注册登录的步骤,是快速建立用户体系的重要一步.这篇文章将介绍 python + flask + 微信小程序实现用户快速注册登录方案(本文主要进行后 ...

  6. Spring Security 整合 微信小程序登录的思路探讨

    1. 前言 原本打算把Spring Security中OAuth 2.0的机制讲完后,用小程序登录来实战一下,发现小程序登录流程和Spring Security中OAuth 2.0登录的流程有点不一样 ...

  7. 微信小程序登录方案

    微信小程序登录方案 登录程序 app.js 调用wx.login获取code 将code作为参数请求自己业务登录接口获取session_key 存储session_key 如果有回调执行回调 App( ...

  8. 微信小程序登录,获取code,获取openid,获取session_key

    微信小程序登录 wx.login(Object object) 调用接口获取登录凭证(code).通过凭证进而换取用户登录态信息,包括用户的唯一标识(openid)及本次登录的会话密钥(session ...

  9. 微信小程序登录JAVA后台

    代码地址如下:http://www.demodashi.com/demo/12736.html 登录流程时序登录流程时序 具体的登录说明查看 小程序官方API 项目的结构图: springboot项目 ...

随机推荐

  1. <%@include>和<jsp:include>有什么不同呢

    <%@include>jsp指令先包含再处理,<jsp:include>jsp动作先处理再包含 1.执行时间上:< %@ include file=”relativeUR ...

  2. 函数模拟sort快排

    设计一个对一维数组进行排序的sort函数,并调用它实现数组排序 思路:函数调用不止调用一个,最主要对函数不熟悉: #include<stdio.h> #define N 10 int ma ...

  3. Binder原理

    --摘自<android插件化开发指南> 1.Binder分为Client和Server两个进程: client和server是相对的.谁发消息,谁就是client:谁接收消息,谁就是se ...

  4. Linux学习之源码包安装与脚本安装(十八)

    Linux学习之源码包安装与脚本安装 目录 源码包与RPM包的区别 源码包安装 脚本安装 源码包与RPM包的区别 1.区别 安装之前的区别:概念上的区别 安装之后的区别:安装位置不同 源码包: 开源的 ...

  5. 想造轮子的时候,ctrl+f一下

    Chardet,字符编码探测器,可以自动检测文本.网页.xml的编码. colorama,主要用来给文本添加各种颜色,并且非常简单易用. Prettytable,主要用于在终端或浏览器端构建格式化的输 ...

  6. 鼠标hover时图片效果

    <!DOCTYPE html><head><meta http-equiv="Content-Type" content="text/htm ...

  7. HDU.4694.Important Sisters(支配树)

    HDU \(Description\) 给定一张简单有向图,起点为\(n\).对每个点求其支配点的编号和. \(n\leq 50000\). \(Solution\) 支配树. 还是有点小懵逼. 不管 ...

  8. 基于CC2530/CC2430 的温度采集系统--DS18B20

    DS18B20是常用的温度传感器.CC2530 采集DS18B20 可以实现温度采集系统等等. 模块链接:https://item.taobao.com/item.htm?id=54130861732 ...

  9. Apache自带压力测试工具----linux环境中ab命令简介及结果分析

    ab(apache bench)是apache下的一个工具,主要用于对web站点做压力测试, 基础用法: 其中-c选项为一次发送的请求数量,及并发量.-n选项为请求次数. 实验测试: [dev@web ...

  10. 潭州课堂25班:Ph201805201 django 项目 第三十二课 后台站点管理(课堂笔记)

    一.后台站点模版抽取 1.获取静态站点模版 可以使用git clone到本地 git clone https://github.com/almasaeed2010/AdminLTE.git 也可以在g ...