希望官方能做出解答,这个问题很严重,因为已经影响到用户体验了!!!
首先说明下我在小程序中的登录(wx.login)和授权获取用户信息、手机号的大致流程。
1、进入小程序时在app.js中的onShow有一个操作,初始化用户登录(登录具体流程是,先wx.checkSession获取登录态是否有效,如果失效则重新wx.login刷新登录态,并把code拿给后端换取新的session_key,并保存至db中)
★这个初始化登录操作是一个全局统一的方法,具体代码如下★
2、现在遇到的情况是,用户在第一次进入小程序后,我如愿的登录并拿到的用户的session_key,并在后端db储存下来。但是,当这个用户隔了10来天再次进入小程序,并点击授权获取用户基本信息并发给后端解密时,就解不出来了!!
3、所以问题来了,这是在初始化的checkSession时并没有检测到用户登录态已经过期了?而告诉我的是success,所以程序就没有去走login登录重新获取登录态!(说明一下,我在后端做了session_key的最近一次更新时间,然而这个用户的session_key是他第一次进小程序时初始化登录得到的)
4、我现在的处理是,如果后台解密失败会返回一个特定的code用于前端做判断,直接调用wx.login()做一次登录,并提示客户"系统开了个小差,请再次点击重试!" 。。。虽然再次点击授权是可以了,但是给用户的体验并不好!
★附上授权获取用户信息、手机号的代码截图(获取手机号时加了checkSession全局方法去验证登录态都没作用!)★
哎,官方以前解释过这个问题,不知道楼主是否会认可。
详见:checkSession一直回调success怎么回事?? - 微信开放社区 https://developers.weixin.qq.com/community/develop/doc/0000645417c8980194baf9e4d57000
楼主,解决了吗,这个问题也困扰我好久了
我也出了这种情况,我自己在pages里写的登录页面,但是微信小程序会自己在最外面的app.js中生成一个wx.login,把那个删除了就不会出现这种问题。我自己是这样改好的
楼主解决了吗
有人吗?