判断用户是否登录的依据有两种。
第一种:只要用户授权,获取到用户昵称、头像等简单信息,即为登录,也就是视觉登录。
第二种:调用wx.login获取code,然后调用腾讯api获取用户的openid等信息,即为登录,也就是体系登录。
所以一般使用体系登录的方式来实现微信小程序的登录功能。
做体系登录就必须要用wx.login,这里要注意wx.login仅在需要的时候调用一次即可,而不是每请求一次后台api就调用一次wx.login,这是不对的,而且wx.login高频调用会导致微信号暂时被封,大概一两个小时左右。
按照小程序官方对登录授权的解释和方案,大致总结就是:
让用户体验到的仅仅是视觉登录,而且是程序确实需要他登录时再登录,但在开发者实现功能时进行体系登录。
对于请求api的前提必须已经进行了体系登录的做法,也就是请求api时要带上openid,可以参考以下步骤:
1、wx.login后,将获取到的openid等信息保存到服务器的缓存数据库,并设置有效期。
仅返回自行维护的session标识到前端。
2、前端收到session标识后存在手机缓存中
3、每次请求api时都必须带上session标识
4、后台用前端来的session标识去缓存数据库里取openid
这一步就是进行登录校验,一是校验session标识的合法性,二是校验是否能取到openid。
如果取到,带着openid去进行数据读写。
如果取不到,要么是session标识不正确,要么是缓存过期被清理了。
将校验结果返回到前端
5、前端根据后台返回结果进行处理,如果返回登录过期,那么就从步骤1开始,重新来一遍登录流程
所以,最好对wx.request、wx.login等api进行封装。
最后至于wx.login是放在onLoad还是onLaunch,这个没有标准,根据自己的实际情况走。