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. jmeter访问mysql数据库

    jdbc:mysql://localhost:3306/jy?allowMultiQueries=true 如果想同时执行多条语句

  2. redis虚拟内存

    对于redis 这样的内存数据库, 内存总是不够用的. 除了可以将数据分割到多个 redis 服务器以外. 另外的能够提高数据库容量的办法就是使用虚拟内存技术把那些不经常访问的数据交换到磁盘上 如果我 ...

  3. 在jsp页面上方定义<style> 可以自定义class的样式

    <style>.border-orange{ border:1px solid orange; width:120px; box-sizing: border-box; margin-bo ...

  4. Binder原理

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

  5. Cinema CodeForces - 670C (离散+排序)

    Moscow is hosting a major international conference, which is attended by n scientists from different ...

  6. spring boot整合servlet、filter、Listener等组件方式

    创建一个maven项目,然后此项目继承一个父项目:org.springframework.boot 1.创建一个maven项目: 2.点击next后配置父项目及版本号 3.点击finish后就可查看p ...

  7. python 数据结构之二分查找的递归和普通实现

    二分查找就是待查找的列表进行分半搜索 如下所示 二分查找普通实现: def erfen(alist, item): start = 0 end = len(alist) - 1 while start ...

  8. python中sqlite问题和坑

    import sqlite3 #导入模块 conn = sqlite3.connect('example.db') C=conn.cursor() #创建表 C.execute('''CREATE T ...

  9. 网页布局之grid属性图

  10. IE和DOM事件流

    * ie采用冒泡型事件 Netscape使用捕获型事件 dom使用先冒泡后捕获事件 冒泡型事件模型: button->div->body (IE事件流) 捕获型事件模型: body-> ...