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. 51Nod1634 刚体图 动态规划 容斥原理 排列组合

    原文链接https://www.cnblogs.com/zhouzhendong/p/51Nod1634.html 题目传送门 - 51Nod1634 题意 基准时间限制:1 秒 空间限制:13107 ...

  2. 51Nod1868 彩色树 虚树

    原文链接https://www.cnblogs.com/zhouzhendong/p/51Nod1868.html 题目传送门 - 51Nod1868 题意 给定一颗 $n$个点的树,每个点一个 $[ ...

  3. c#代码文件上传和下载

    public JsonResult UploadFile(DriverFileManager filem)        {                       var hfc = Syste ...

  4. .net core cookie登录和session的 DataProtectionProvider 加入 redis

    string redisConnectionString = Configuration.GetSection("Storage:Redis").GetValue<strin ...

  5. 在github上创建新的分支(包括管理分支)

    考虑到前面的项目在master分支上,这个不是太友好,下面在只有master分支的基础上,新建一个dev分支 一:查看 1.查看本地分支 git branch 2.查看远程分支 git branch ...

  6. 20165319 《JAVA程序设计》第一周学习总结

    教材内容学习总结 1.了解了基础的JAVA历史 2.学会了JDK的安装 3.学会了JAVA的基本应用 git的学习以及代码相关 1.学会了git在Windows系统上的安装以及linux系统的安装 2 ...

  7. day15 函数的使用方法:递归函数

    这里归纳的知识点主要就是: 浮点数,复数, int,整形:float,浮点数:complx,复数: # 实数: # 有理数 有限小数 1.2 # 无限循环小数 1.23232323232323.... ...

  8. JavaScript深拷贝实现原理简析

    原文:http://www.cnblogs.com/xie-zhan/p/6020954.html JavaScript实现继承的时候,需要进行对象的拷贝:而为了不影响拷贝后的数据对原数据造成影响,也 ...

  9. python爬取今日头条关键字图集

    1.访问搜索图集结果,获得json如下(右图为data的一条的详细内容).页面以Ajax呈现,每次请求20个图集,其中 title --- 图集名字 artical_url --- 图集的地址 cou ...

  10. angular7一周学习

    ng new xxx 创建一个项目 ng serve --open 执行一个项目 angular 使用socket.io 报错 找到polyfills.ts添加 (window as any).glo ...