收藏
回答

jsapi_ticket到底如何判断过期时间?

通过接口获取到的时间,一直都是7200,并且ticket也不变,假如说,我在1小时50分钟,把我的缓存删除了,我在次请求jsapi_ticket,他还是7200,完全不知道还有多久过期,怎么处理啊,太难了

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

4 个回答

  • 轻松的小希
    轻松的小希
    03-14
    1. 提前刷新:为了避免在使用过程中ticket过期,你可以在ticket快过期时(比如剩余有效期不到5分钟)提前调用接口刷新ticket。

    支持吗?不是说7200s内调用都是相同的ticket吗

    03-14
    有用
    回复
  • 风清雾散云开见日出
    风清雾散云开见日出
    03-14

    你第一次获取ticket就缓存当前时间,在7200s内获取的ticket是不变的,不要变这个缓存时间,到期后再获取ticket,这个值变了,就更新这个缓存时间。这个ticket一般是存储在数据库中,不建议放在前端,不安全。

    03-14
    有用
    回复 7
    • 轻松的小希
      轻松的小希
      03-14
      如果缓存删掉了呢?下次获取怎么知道什么时候过期呢?
      03-14
      回复
    • 风清雾散云开见日出
      风清雾散云开见日出
      03-14回复轻松的小希
      这个本来就不支持缓存在前端。在你后端数据库中怎么会被删除。
      03-14
      回复
    • 轻松的小希
      轻松的小希
      03-14回复风清雾散云开见日出
      是不是就是上线前,线上的aksk,一定不要提前去调用jsticket,然后线上第一次请求的时候,缓存一下,并记下时间,然后一直严格按照这个时间来,相当是客户端(后端相对于微信来讲是客户端),来做时间管理了,但是随着时钟会有不一样的情况,未来某一天可能会有几秒钟获取到的ticket用来生成的签名会失效。
      03-14
      回复
    • 风清雾散云开见日出
      风清雾散云开见日出
      03-14回复轻松的小希
      失败就重新获取啊,你使用ticket访问对应的api,会报错ticket失效的错误码,后端再获取ticket并刷新这个时间重新回滚事件不就行了。
      03-14
      回复
    • 风清雾散云开见日出
      风清雾散云开见日出
      03-14回复轻松的小希
      第一:服务器做个定时器定时刷新ticket;
      第二:使用ticket时根据失效报错码回滚事件,重新刷新获取ticket就行了。
      03-14
      回复
    查看更多(2)
  • 正青春
    正青春
    03-13

    当你成功获取到jsapi_ticket时,记录下当前的服务器时间,加入数据库,增加两个小时的时效,每次调用如果在时效内就读取数据,如果超过时间就重新获取,以此类推

    03-13
    有用
    回复 4
    • 轻松的小希
      轻松的小希
      03-14
      你说的这个听明白了,但是这个有点太绝对了,如果我把缓存不小心删掉了,重新获取,那剩余存活时间就不知道了
      03-14
      回复
    • 正青春
      正青春
      03-14回复轻松的小希
      放数据库里,没让你缓存
      03-14
      回复
    • 轻松的小希
      轻松的小希
      03-15回复正青春
      微信公众号新老jsapi_ticket交替获取时由于程序执行耗时不能确定,超过2h获取jsapi_ticket值时,老的jsapi_ticket过期会影响业务。  他支持提前几分钟刷新吗
      03-15
      回复
    • 正青春
      正青春
      发表于小程序端
      03-15回复轻松的小希

      提前多久根据业务需要设定,你可以把存放的时间缩小就可以了

      03-15
      回复
  • 智能回答 智能回答 该问答由AI生成
    03-13
    有用
登录 后发表内容