首先要了解这个,得先知道微信登陆的流程在我以前的博客里面有

uniapp微信小程序登陆流程(前端详细)__揽的博客-CSDN博客_uniapp小程序如何做登录

uniapp微信小程序登陆流程(前端详细)__揽的博客-CSDN博客_uniapp小程序如何做登录

1.逻辑思路(会我上面链接以后才会理解我下面的方法)

第一次登陆的时候,将uni.getUserProfile()获取的数据缓存在本地,因为uni.getUserProfile()这个api必须通过点击按钮事件才可以调起,然后等下次在自己封装的request请求中,后端响应结果为token失效时做处理,判断本地存储里面有没有这个缓存uni.getUserProfile()得到的数据,如果有的话,直接使用uni.login()函数得到code和本地缓存uni.getUserProfile()的数据相结合向服务器发起登陆,这样就可以做到无痕登陆,最主要的操作是将uni.getUserProfile()得到的数据缓存下来

export const request = (url, method = 'get', params = {}) => {const token = uni.getStorageSync('token') || ''; //获取tokenuni.showLoading({title: "加载中"});return new Promise((resolve, reject) => {uni.request({url: myApi.hostBaseUrl + url,method: method,header: {'X-Token': token},data: {...params},success(res) {console.log('request', res)if (res.data.msg === "登录信息已失效,请重新登录") {let loginInfo = uni.getStorageSync('loginInfo');if (loginInfo == '') {//这里是对token失效 同时也没有缓存uni.getUserProfile()数据做的处理uni.redirectTo({url: '/pages/myUser/wxSign/wxSign?fromUrl=' +encodeURIComponent(getCurrentPages()[getCurrentPages().length - 1].$page.fullPath)})} else {//这里是已经缓存了uni.getUserProfile()数据 直接发起调用登陆wxlogin(loginInfo)}} else {if (res.data.code != 200) {uni.showToast({title: res.data.msg,icon: 'none'})return}resolve(res);}},fail(err) {reject(err);},complete() {uni.hideLoading();}});});
};
wxlogin = (loginInfo) => {let that = this;uni.showLoading({title: '登录中'});uni.login({desc: 'weixin',success: res => {uni.request({url: '请求后端登陆接口',data: {code: res.code,encryptedData: loginInfo.encryptedData,iv: loginInfo.iv},method: 'GET',success(res) {console.log('登陆成功')//下面将从新刷新页面var pages = getCurrentPages(); //获取所有页面的数组对象var currPage = pages[pages.length - 1]; //当前页面uni.reLaunch({url: currPage.$page.fullPath})},fail() {that.$refs.uNotify.show({message: '授权失败,请联系管理员',type: 'error'});}});}});
}

uniapp微信小程序登陆-升级版,登陆加登录信息过期以后的无痕登陆相关推荐

  1. 【大白话学习】UniApp 微信小程序与APP应用 开发零基础入门教程(七)---登陆注销功能与微信小程序测试号的申请

    到此为止,我们只差一个退出登陆功能了. 回到index.vue页面,之前我们已经预留了退出按钮,现在给它加上功能 <button class="mybutton" type= ...

  2. 微信小程序下拉刷新列表onPullDownRefresh;微信小程序上划加载列表onReachBottom;uni-app微信小程序下拉加载数据;uni-app微信小程序上划页面加载数据

    需求:微信小程序列表加载有两种方式,分别是按住页面下拉加载数据数据(触发onPullDownRefresh)和直接上划滚动页面到底部加载数据(触发onReachBottom函数). 本文主要是使用上划 ...

  3. uniApp 微信小程序 授权 公众号推送信息

    准本工作 1.首先小程序  更公众号关联起来 2.配置相应的域名(也就是你请求后端接口的公共地址) 3.需要写一个h5 页面 用于跳板 公众号 的授权 公众号如何关联小程序? 打开微信公众号后台,选择 ...

  4. 【大白话学习】UniApp 微信小程序与APP应用 开发零基础入门教程(二)---登陆界面功能实现

    打开 main.js,这个文件里定义的是整体小程序中会用到的一些 功能 (即变量之类),也就是说,只要在这里出现的功能,其它页面可以直接拿来使用.可以把它理解为: 共享单车main ,大家都可以用. ...

  5. uni-app微信小程序封装全局判断是否登录方法结合全局变量

    新建的uni-app项目会有个app.vue文件,在此文件下 onLaunch应用生命周期封装一个方法(把全局变量定义一下): 注意:onLaunch应用生命周期只会触发一次 app.vue: < ...

  6. uniapp微信小程序uni-load-more上拉加载更多数据

    1.引入uni-app中uni-load-more.vue到自己的项目 import uniLoadMore from '@/components/uni-load-more/uni-load-mor ...

  7. uniapp微信小程序不强制登陆的逻辑(模仿大厂登陆)

    博主不易,记得收藏点赞加关注哈 前言 正常需求中,微信小程序的登陆都是不强制的,但是网上大多资料教的都是强制登陆,或者做个登陆页面,其实这种太影响用户体验,还很容易小程序审核不通过 如果想看懂这篇博客 ...

  8. java实现微信、手机号登陆_微信小程序获取手机号授权用户登录功能

    小程序中有很多地方都会用到注册用户信息的地方,用户需要填写手机号等,有了这个组件可以快速获取微信绑定手机号码,无须用户填写. 1.getPaDirIrkFhoneNumber这个组件通过button来 ...

  9. vue uniapp 微信小程序 搜索下拉框 模糊搜索

    vue uniapp 微信小程序 搜索下拉框 模糊搜索 话不多说 直接贴代码 template <template><view class="index"> ...

最新文章

  1. iOS 线程安全之@synchronized的用法
  2. python xlrd简单读取excel
  3. Android 四大组件之——Acitivity(三) 深入了解Activity的启动流程
  4. 【PC工具】大神级代码注释,漂亮实用的代码注释工具代码logo工具
  5. GPUimage实时滤镜的实现
  6. Java黑皮书课后题第7章:7.8(求数组的平均值)使用下面的方法头编写两个重载的方法,返回数组的平均数。编写一个测试程序,提示用户输入10个double型值,然后调用这个方法显示平均值
  7. ue 编写linux脚本,UltraEdit23 sh文件 (shell脚本)着色
  8. 20道C#练习题(一)1——10题
  9. C++3个汉诺塔递归问题
  10. 腾讯视频手机app下载安装_腾讯视频怎么签到
  11. 项目管理学习 总结(一)
  12. unison+inotify-tools实现双向实时同步
  13. 未来PCB行业互联网+发展趋势
  14. 贝壳:月光宝盒的密码(二分查找,暴力破解,动态规划)
  15. DHCP服务原理(转载)
  16. python生成的exe反编译
  17. pe擦除服务器硬盘,老毛桃winpe分区助手删除分区后如何用Gutmann算法擦除硬盘数据?...
  18. java dos攻击 异常_HashMap出现Hash DOS攻击的问题
  19. 如何利用魔棒工具抠图_ps魔棒工具怎么用?抠图常用工具(二)
  20. Font family [‘sans-serif‘] not found.Falling back to DejaVu Sans.解决办法

热门文章

  1. 对待批评的的不同态度
  2. Java001 了解JRE、JDK以及JDK版本
  3. BOFC、BOF与BOVW
  4. 实战某小型企业项目系列二:方案设计
  5. 论文参考文献书写格式
  6. python去空格的函数_(转)python strip()函数 去空格\n\r\t函数的用法
  7. 求1+2+3+...+n的和
  8. Android 在java代码中获取xml中设置的dimen值
  9. ubuntu 添加用户到用户组
  10. oracle统计一年中每个月的数据