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. Codeforces Round #487 (Div. 2) 跌分有感

    又掉分了 这次的笑话多了. 首先,由于CF昨天的比赛太早了,忘记了有个ER,比赛开始半个小时才发现. 于是只能今天了. 嗯哈. 今天这场也算挺早的. 嗯嗯,首先打开A题. 草草看了一遍题意,以为不是自 ...

  2. 20165319第五周java学习笔记

    教材内容总结 1.String类和StringBuffer类都覆盖了toString方法,都是返回字符串. 所以带不带toString效果是一样的. 2.instanceOf运算符可以用来判断某个对象 ...

  3. 异常java.lang.IllegalArgumentException:attempt to create delete event with null entity

    异常java.lang.IllegalArgumentException:attempt to create delete event with null entity解决:路径问题,前台jsp和ja ...

  4. JAVA程序的基本结构

    java程序(类)其实是一个静态方法库,或者是定义了一个数据类型.所以会遵循7种语法:     1.原始数据类型:             ---整型:byte.short.int.long ---浮 ...

  5. Django的MVT模型

    MVC模型和MVT模型 MVC简介: MVC的全拼为Model-View-Controller,最早由TrygveReenskaug在1978年提出,是施乐帕罗奥多研究中心(Xerox PARC)在2 ...

  6. php mysql 编码问题

    php mysql 编码问题 问题: PHP从数据库中读取数据,并echo出来,数据中文显示正常:但是echo出新定义的中文字符串,新定义的字符串会乱码. 由此可能是数据库中提取出来的中文编码和php ...

  7. Mysql8.0升级后,Navicat连接报错caching_sha2_password 问题

    需要重新配置加密规则 ALTER USER 'root'@'localhost' IDENTIFIED BY 'password' PASSWORD EXPIRE NEVER; ALTER USER ...

  8. Java 并发工具包 | J.U.C

    不知道大家还有没有印象,上次我们已经说过了,我们为了实现集合相关类的线程安全,JDK 提供了一套同步容器,也就是 Vector,Hashtable,还有一个 Collections 工具类中的几个方法 ...

  9. 64. 合并排序数组.md

    描述 合并两个排序的整数数组A和B变成一个新的数组. 你可以假设A具有足够的空间(A数组的大小大于或等于m+n)去添加B中的元素. 您在真实的面试中是否遇到过这个题? 样例 给出 A = [1, 2, ...

  10. 输出日文CSV乱码问题

    直接写用Excel打开时会乱码,需要加上下面代码中注释的三行 fos = new FileOutputStream(file, false); //fos.write( 0xef ); //fos.w ...