目前测试发现,同一账号在不同真机上切换登录,行为正常,在登录前 wx.checksession 成功了, 登出微信后再在相同设备上登录,这个 wx.checksession 就会返回失败,这对于小程序的微信三方登录流程是正确的。
但是开发工具和真机间的行为就比较混乱了,因为开发工具里微信账号和真机微信账号是可以同时登陆的,这样就会出现checksession 在两边都会返回成功的情况,而导致本地存储的三方 sessionId 实际上无效,但是 checksession 告诉你有效的情况。
刚刚和后端同学聊了一下,是否流程应该是这样:
小程序前端判断有没有 sessionId
有,通过业务后端验证 sessionId
如果 sessionId 过期,则小程序前端直接 wx.login() 上传 code 并通过业务后端调用获得新的带有过期时间的 sessionId
如果 sessionId 没过期,则小程序调用前端 wx.checkSession
如果 wx.checkSession 返回成功,则意味着微信 session 未过期,意味着登录态依旧存在,继续用这个存在的 sessionId
如果 wx.checkSession 返回失败,则意味着微信 session 过期,则小程序前端直接 wx.login() 上传 code 并通过业务后端调用获得新的带有过期时间的 sessionId
无,则小程序前端直接 wx.login() 上传 code 并通过业务后端调用获得新的带有过期时间的 sessionId
还望指导!!!