restful举例: 1.小程序端 wx.login 获取授权码 2.小程序端调用自有系统登录接口,自有系统调用微信接口code2Session获取openid和session_key后,在微信后台认为标记是登录。自有系统生成token返回。 3.小程序端判断自有系统的token即可获知自有系统的登录状态,使用自有系统token与自己 的后台交互 大部分业务这样即可满足。部分小程序API,微信后台在认为用户是登录状态时,可获取信息量较大(例如 getUserInfo)所以:小程序先使用checkSession校验,然后进行123步骤。如果失效,可以重新进行自家系统的登录。 这里需要清晰: 1.用户在微信后台认为的登录状态。 2.用户在自家系统认为的登录状态。 (记住后台调用code2Session时,微信后台才算用户的登录状态) 方案1:1.判断自家系统token 2.判断是否重新登录 方案2:使用到微信登录状态的api时:延续方案1,进行checkSession,判断是否登录 方案3:后台单独开一个接口调用code2Session,自有系统token存在并未失效,但checkSession失败时单独调用。 session_key和openid 给前端是没用的。另外登录状态传给后台也是没用的。后台只要支持可以再次登录就好了,注意处理调用wx.login授权码失效的情况。
授权不授权都没影响,所以wx.checkSession到底怎么用?在未授权状态下进入小程序,获取不到用户昵称,没有在onShow里调用wx.login({}),没有弹出授权框,wx.checkSession回调fail,再授权后回调true。 在未授权状态下进入小程序,获取不到用户昵称,在onShow里调用wx.login({}),没有弹出授权框,wx.checkSession回调true,再授权后回调true。 之前授权过状态下进入小程序,获取到用户昵称,没有在onShow里调用wx.login({}),没有弹出授权框,wx.checkSession回调fail,调用wx.login({})后回调true。 之前授权过状态下进入小程序,获取到用户昵称,在onShow里调用wx.login({}),没有弹出授权框,wx.checkSession回调true。 所以wx.checkSession只跟有没有wx.login有关系?跟授权这个动作没关系? 我现在全用 wx.getStorageSync('token') 来判断用户有没有授权或者授权过期。 所以大家都是在什么情况下使用checkSession?
2020-03-30