今天花一天时间梳理了一下盘古微信小程序的登录功能(效率有点低,见谅!),发现这个功能的确比较复杂。
第一步.根据环境不同,设置接口地址。
第二步.通过接口获取用户信息(两种情况下):
(1).更新版本
(2).没有缓存的情况下(可以是人为的清空、也可以是第一次登录)。
第三步. 重点来了!!!
接下来通过getUserInfo()方法以及嵌套在这个方法中的login()方法实现登录:
1.还是先判断有没有用户缓存信息,如果有,就直接执行回调。
2.如果没有,则通过login方法获取,下面是login方法的执行步骤:
(1).执行login方法的时候传入一对象包含success、fail 方法,与defaultOptions对象进行合并、覆盖,生成新的对象参数, 传入方法中。
(2).首先判断有没有登录地址loginUrl,若没有,则直接返回fail回调
(3).执行微信登录api: wx.login以及获取用户信息api: wx.getUserInfo,如果成功,则进行下一步;失败,则返回fail回调。
(4).使用上一步获取的用户登录凭证、用户加密信息请求接口获取用户信息列表。(旧的用户为单用户,所以为对象格式。)。到这一步,login方法完结。
(5).现在回到getUserInfo()方法中。将获取的用户数据处理为数组array格式,现在根据两点去判断接下来该怎么走:一.有没有用户缓存,二.是不是多用户。
(6).如果有缓存,单用户的话更新缓存,加载获取的用户信息;如果是多用户的话,首先判断传递的参数中有没有userId,如果有,则在userInfoList中找到对应的uerInfo,更新缓存,加载获取的用户信息.如果没有,则跳转到用户选择页面,让用户选择登录账号。
(7).在判断为多账户的时候,会设置一个全局性的方法:可以,在用户选择账户时,更新用户信息,并返回上一步。
(8).最后,如果成功,则执行成功回调,失败则执行失败回调。
网友评论