公众号开发,你们的 Access Token 和 Jsapi Ticket 多久更新一次? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
oh
V2EX    问与答

公众号开发,你们的 Access Token 和 Jsapi Ticket 多久更新一次?

  •  1
     
  •   oh 2017-11-04 21:28:53 +08:00 3321 次点击
    这是一个创建于 2983 天前的主题,其中的信息可能已经有所发展或是发生改变。
    是按响应的到期时间( 7200 秒)呢?
    还是定时 X 分钟就刷新一次?
    还是基于 memcached 或 redis 一类的自动缓存失效就去获取新的?
    14 条回复    2017-11-05 10:24:23 +08:00
    blessyou
        1
    blessyou  
       2017-11-04 21:33:25 +08:00 via Android
    存一个过期时间。 如果请求时间超过过期时间 ,就取新的并覆盖原来的值和过期时间,如果请求时间没超过过期时间,就取历史值
    qiayue
        2
    qiayue  
    PRO
       2017-11-04 21:33:44 +08:00
    存数据库( MySQL、memcached、redis 皆可),同时保存过期时间
    每次获取的时候,查看过期时间
    如果某次使用发现剩余时间小于 600 秒(或 1000 秒),则去获取最新,并保存,更新过期时间
    oh
        3
    oh  
    OP
       2017-11-04 21:49:36 +08:00
    @blessyou @qiayue

    这两种方法都要注意高并发的情况,假设与微信服务器通讯时间为 1s,这 1s 以内同时访问的人就有可能出现重复获取的情况。不过要解决也很容易… 加锁啊 之类的都行…

    我现在的做法是暴露一个更新接口,给外部的定时器(例如 crontab )定时访问,如果在临近过期时间就获取新的,而访客那边实时拿到的都是最后一个。不知道这个方法有没有啥问题,所以想来 V2 上看看大家怎么玩的。
    shiny
        4
    shiny  
    PRO
       2017-11-04 21:51:52 +08:00
    另外提醒下:如果 Token 没有统一管理,会出现 7200s 没有到的情况下就已经过期了。需要注意处理异常。
    oh
        5
    oh  
    OP
       2017-11-04 21:56:54 +08:00
    @shiny 卧槽?还有这种操作?是不是因为原有 token 被刷新了,导致老 token 没到 7200s 就失效?
    shiny
        6
    shiny  
    PRO
       2017-11-04 21:58:41 +08:00
    @oh 是的。翻了下微信的文档,描述的应该是比较详细了。https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140183
    oh
        7
    oh  
    OP
       2017-11-04 22:00:20 +08:00
    @shiny 那还好,我以为无缘无故的 提前过期… 这玩意果然一定要统一管理啊…
    pubby
        8
    pubby  
       2017-11-04 22:02:14 +08:00
    @oh 是的,所以我们是专门跑一个服务主动更新各个公众号的 token。 然后各业务访问这个服务获取 token
    alex321
        9
    alex321  
       2017-11-04 22:03:39 +08:00 via Android
    7000s,所有服务共享。
    oh
        10
    oh  
    OP
       2017-11-04 22:09:10 +08:00
    @alex321 所有服务共享是肯定的… 好奇的是哪种刷新方式…

    @pubby 有木有出过什么异常的时候?我这边用这个方式两个月,倒是没出什么问题,不知道有啥隐藏的坑没
    wdlth
        11
    wdlth  
       2017-11-04 22:13:18 +08:00
    用的单独服务进行刷新,用消息系统来获取。
    carlclone
        12
    carlclone  
       2017-11-04 22:18:23 +08:00 via Android
    用的 easywechat 之后没管过这些问题, 内部就有实现,有兴趣可以看看
    carlclone
        13
    carlclone  
       2017-11-04 22:20:02 +08:00 via Android
    好像默认是文件缓存,可以实现 Redis driver
    iyaozhen
        14
    iyaozhen  
       2017-11-05 10:24:23 +08:00 via Android
    并发不高存文件都行,发现过期了再去获取。重复获取问题也不大,值又不会变。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     3738 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 25ms UTC 05:07 PVG 13:07 LAX 21:07 JFK 00:07
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86