收藏
回答

wx.checkSession方法问题,为什么检测不了用户登录态?

希望官方能做出解答,这个问题很严重,因为已经影响到用户体验了!!!

首先说明下我在小程序中的登录(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全局方法去验证登录态都没作用!

回答关注问题邀请回答
收藏

5 个回答

  • 青寒
    青寒
    2021-06-03

    哎,官方以前解释过这个问题,不知道楼主是否会认可。

    详见:checkSession一直回调success怎么回事?? - 微信开放社区 https://developers.weixin.qq.com/community/develop/doc/0000645417c8980194baf9e4d57000

    2021-06-03
    有用 1
    回复 1
    • 你的阿陈哥
      你的阿陈哥
      发表于移动端
      2021-06-03
      我看了,官方回复的这个流程,实际上checkSession去这样用,还是无法检测,真的是个大bug!
      2021-06-03
      回复
  • Null
    Null
    2022-01-20

    楼主,解决了吗,这个问题也困扰我好久了

    2022-01-20
    有用
    回复
  • 楠檀
    楠檀
    2021-08-21

    我也出了这种情况,我自己在pages里写的登录页面,但是微信小程序会自己在最外面的app.js中生成一个wx.login,把那个删除了就不会出现这种问题。我自己是这样改好的

    2021-08-21
    有用
    回复
  • 望烁
    望烁
    2021-07-19

    楼主解决了吗

    2021-07-19
    有用
    回复
  • 你的阿陈哥
    你的阿陈哥
    2021-06-08

    有人吗?

    2021-06-08
    有用
    回复
登录 后发表内容