wx.checksession 真机和开发工具的行为问题
发布于 7 年前 作者 juanma 15240 次浏览 来自 问答

目前测试发现,同一账号在不同真机上切换登录,行为正常,在登录前 wx.checksession 成功了, 登出微信后再在相同设备上登录,这个 wx.checksession 就会返回失败,这对于小程序的微信三方登录流程是正确的。

但是开发工具和真机间的行为就比较混乱了,因为开发工具里微信账号和真机微信账号是可以同时登陆的,这样就会出现checksession 在两边都会返回成功的情况,而导致本地存储的三方 sessionId 实际上无效,但是 checksession 告诉你有效的情况。

4 回复

刚刚和后端同学聊了一下,是否流程应该是这样:


小程序前端判断有没有 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


还望指导!!!

我们也遇到类似的问题, checkSession 通过,但我们的server端过期了.

目前我们想的解决方案就是前端 在保存sessionId的时候 同时保存时间,

由小程序前端 获取这个sessionId的时候 对比这个时间是否超时过期, 如果过期, 从走wx.login()流程.

期望能由更好的解决方案

不知道如何处理,在真机和开发工具上来回切换,虽然  checkSession  是有效的,但是自己本地存储的session3rd 已经清空了,然后要 执行两次 wx.login才可以

checkSession只是微信的session是否过期

但是第三方的session是否有效需要你们自己进行判断,不能依赖checkSession

回到顶部