收藏
回答

不是很明白wx.checkSession的使用场景?

如题, 小程序授权登陆后 后端通过session_key 生成一个token 然后这个token的时效性是我们后端自己维护的 这种场景下用不到checkSession吧。

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

8 个回答

  • 肖自在
    肖自在
    2023-11-07

    我的想法是:

    登录小程序服务端返回的token的作用是用来标识当前用户在服务端的登录状态,而session_key的有效性是用户在微信服务器的登录状态。

    服务器返回的token,用户服务器对用户做身份认证,是否过期有自己维护。checkSession是检查用户在微信的登录状态是否过期。

    当session_key过期,则说明用户在微信侧的登录过期,这是如果用户再请求访问微信侧的接口,是无法成功通过session_key解密数据的。所以为了避免解密数据失败的情况,需要客户端通过checkSession来检查用户在微信侧的登录状态

    2023-11-07
    有用 3
    回复 1
    • LingJie、
      LingJie、
      01-16
      你说的有道理
      01-16
      回复
  • TNT
    TNT
    2019-09-23

    两种方法:

    第一种:每次拿授权信息前,都去login拿最新的code找后端获取数据。

    第二种:授权时先调用checkSession判断session_key是否失效,失效重新调用wx.login。没失效只给后端iv和data去获取数据,后端照样返回你数据~

    综合:第一种每次刷新登录态,不确定是否有其他影响,第二种是我们现在用的~

    2019-09-23
    有用 3
    回复 13
    • 梦如南笙
      梦如南笙
      2019-09-23
      用户首次登陆 不就把用户相关的信息存到数据库了? 还要每次都要给后端iv和data获取数据吗? \疑问
      2019-09-23
      1
      回复
    • Doma.
      Doma.
      2019-09-23回复梦如南笙
      看业务需要的,比如获取用户手机号,也是需要 iv 和 encryptedData 来解密的;比如有些业务并不止第一次登录取用户信息,后续还会更新;等等情况。
      2019-09-23
      1
      回复
    • Memory
      Memory
      2019-11-22
      iv和data不是getUserInfo成功后才有吗?
      2019-11-22
      回复
    • TNT
      TNT
      2019-11-22回复Memory
      嗯。getPhoneNumber后也有
      2019-11-22
      回复
    • TNT
      TNT
      2019-11-22回复梦如南笙
      用户登录态失效?用户删除了小程序重新进来?
      2019-11-22
      回复
    查看更多(8)
  • 太郎🐱
    太郎🐱
    2019-09-23

    如果不是直接用的微信那一套的话,这个checksession 已经没有意义了!除非两边的过期时间都一致;

    2019-09-23
    有用 2
    回复 1
    • 梦如南笙
      梦如南笙
      2019-09-23
      感谢回答 明白了
      2019-09-23
      回复
  • kewbcf
    kewbcf
    2023-05-20

    2023-05-20
    有用 1
    回复
  • 小孩孜℡
    小孩孜℡
    2019-09-23

    目前没有用到,每次都是拿最新的code去实时换取的

    2019-09-23
    有用 1
    回复
  • Doma.
    Doma.
    2019-09-23

    微信授权不是给你一个 session_key 么,这个 session_key 不是没有用的,是可以用来解码加密数据的(如果你的业务中有用到)。然后这个 session_key 是有时效性的,它的时效性就是通过 checkSession 来检查的。因此如果 checkSession 说登录失效了,那么通常你就需要重新进行微信授权,更新 session_key。

    2019-09-23
    有用 1
    回复 7
    • 梦如南笙
      梦如南笙
      2019-09-23
      嗯 用户首次授权登陆用到了session_key 但是返回前端的token是我们自己维护的 和微信没有关系 所以我感觉如果是这种场景checkSession用不到。 感谢你的回答
      2019-09-23
      回复
    • 慢慢。
      慢慢。
      2019-11-07
      看了wx.checkSession的使用文档,好像不需要传参,那我怎么判断这个sessionKey有没失效?调用就能检测到?我下面那样写就OK了?
      2019-11-07
      回复
    • Doma.
      Doma.
      2019-11-07回复慢慢。
      对,不用传参。checkSession 检查的就是你上次调 wx.login() 得到的 session_key 是否过期。
      2019-11-07
      1
      回复
    • 慢慢。
      慢慢。
      2019-11-07回复Doma.
      那为什么我用实时日志在小程序后台看到的情况是:wx.checkSession是fail状态,表示key失效嘛,那我后面再通过wx.login 拿code从后台置换回来的sessionKey还是之前失效的 sessionKey 是一样的。(而且,我觉得我的key应该没那么快失效才对,这是我觉得很奇怪的)
      2019-11-07
      回复
    • Doma.
      Doma.
      2019-11-07回复慢慢。
      可能你的验证流程有问题,或者实时日志有错误,或者微信官方的 wx.checkSession 文档骗人吧。
      2019-11-07
      回复
    查看更多(2)
  • LLL
    LLL
    2021-07-12

    要是获取手机号,这个 session_key 是必须的,这个两边的过期时间都一致是个很难的问题,反正我是改了很多版本后,采用了入库加比对,不知道其他大佬是怎么解决的,求赐教。

    2021-07-12
    有用
    回复 2
    • LLL
      LLL
      2021-07-12
      而且每一次还不能不wx.checkSession就wx.login,因为并不是每次wx.login都会刷新code。
      另外,还有session_key已过期,wx.checkSession还是会返回success,导致后续的getPhoneNumber解密失败
      2021-07-12
      回复
    • 奥斯卡
      奥斯卡
      2021-09-28
      需要用 session_key 的请求前调一次 wx.checkSession ,如失败刷新登录状态。后端写个接口用 session_key 如果失败,返回失败特定状态码,然后前端刷新登录状态。
      2021-09-28
      回复
  • 未命名科技
    未命名科技
    2019-09-23

    我们也是,在自行维持一套 token 鉴权机制的情况下这个 session_key 是没什么用。

    2019-09-23
    有用
    回复 4
    • 光阴的故事.
      光阴的故事.
      2023-04-27
      那我如果token没过期,session_key过期了,找个时候需要session_key来获取微信那边的数据,应该怎么办呢,
      2023-04-27
      回复
    • 一路向北
      一路向北
      2023-07-28
      请问你们自己的token是怎么生成的?
      2023-07-28
      回复
    • 晴天
      晴天
      2023-08-30回复一路向北
      wx.generateToken()
      2023-08-30
      2
      回复
    • kewbcf
      kewbcf
      09-22回复一路向北
      jwt 使用 session_key 对 openid 进行签名
      09-22
      回复
登录 后发表内容
问题标签