小程序登录流程解析

此文章是对另一位文章的理解笔记,请先阅读大佬文章!!!

小程序登录流程解析_第1张图片
流程图.png

exeLogin(): 调用wx.login获取信息存到本地缓存中; getLoginInfo(): 调用wx.checkSession校验session_key,有效的话从本地取出缓存,无效重新调用exLogin() 。

在app.js 的onlaunch中调用 getLoginInfo() ,获取信息后 再调用 wx.getSetting 然后把用户信息、是否已登陆布尔值、授权列表 赋值给globalData, 并且判断下是否有回调函数cb, 有的话调用回调函数(在页面中的onload判断下globalData里是否登录的布尔值,true的话把globalData中的用户信息、是否已登录布尔值、授权列表 赋值给页面中的三个字段然后提供给页面使用; false的话说明getLoginInfo()这个异步函数还没执行完,定义一个回调loginedCb让上面那步调用, 页面中的这一串操作也封装个函数pageGetLoginInfo()。再在pageGetLoginInfo外套一个页面初始化的函数pageOnLoadInit,传入一个needAuth的布尔值参数,这个页面是否需要授权信息, 在这个函数里面调用pageGetLoginInfo,给页面的data赋值完后判断是否需要授权信息,需要授权的话跳到专门的授权页面)

简化的流程是:app.js 的onlaunch中调用 getLoginInfo( ), 并且处理调用之后的存储globalData的操作。在需要登陆信息的页面里调用pageOnLoadInit( ), 如果这个页面还需要授权信息的话传入true布尔值,默认false, 这个函数里再调用pageGetLoginInfo(),这个pageGetLoginInfo函数把globalData的信息setData到当前页面里。

你可能会问 为啥要把用户信息、是否已登陆布尔值、授权列表这三个信息存到globalData 又要再存到页面的data里?这是因为 在app.js 的onlaunch中获取信息存到globalData的过程中可能页面的onLoad已经执行了, 但是这个时候可能用户信息并没有拿回来,导致错误。所以在页面中存到当前页面data里的时候判断 下globalData的app.js 的是否已登录布尔值, 是的话说明已经拿回用户信息了 可以直接存到当前页面的data, 否的话 就定义一个loginedCb回调函数让app.js 的onlaunch调用(loginedCb这个回调函数也只是把globalData的信息存到当前页面中的data里。)

这个思想和小程序模板里的例子是一样的。用微信开发者工具创建个新项目就能在页面的index.js看到这段代码,这个回调函数用法就是核心思想 然后进行每一步的封装 这个一定要理解


小程序登录流程解析_第2张图片
小程序模板函数.png

你可能感兴趣的:(小程序登录流程解析)