记一次微信 access_token invalid credential, access_token is invalid or not latest - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
lyxxxh2
V2EX    PHP

记一次微信 access_token invalid credential, access_token is invalid or not latest

  •  2
     
  •   lyxxxh2 13 天前 1282 次点击

    场景

    多项目使用微信公众号access_token,每个项目的acess_token不共享,就会:

    {"errcode":40001,"errmsg":"invalid credential, access_token is invalid or not latest, could get access_token by getStableAccessToken, more details at https://mmbizurl.cn/s/JtxxFh33r rid: "} 

    原因

    "重复获取将导致上次获取的 access_token 失效。建议开发者使用中控服务器统一获取和刷新 access_token"

    文档:https://developers.weixin.qq.com/doc/oplatform/developers/dev/AccessToken.html

    工作这么多年,还没仔细看过微信文档。

    解决

    搞中控服务器麻烦,也懒着换成 reids 。

    扩展包用的: w7corp/easywechat

    默认用文件的缓存,保证用同个文件就行。

    $app->getAccessToken()->getKey() $app->getAccessToken()->getToken() // 不同版本,方法不一样 $app->base->getAccessToken()->getTokenKey() $app->base->getAccessToken()->getToken() 

    一开始我以为扩展包的坑,一个个排查,还去对比缓存文件的 token

    最后一看微信文档,我擦 结案了。

    7 条回复    2025-10-31 13:46:14 +08:00
    jackleo120
        1
    jackleo120  
       13 天前   1
    之前注意过这个问题,不过是因为测试环境和正式环境他们的 appid 都是同一个。。
    后来仔细查阅文档,发现微信文档是提供解决办法的,不需要中控服务器,就是直接 5 分钟内刷一下就可以了。
    https://developers.weixin.qq.com/miniprogram/dev/OpenApiDoc/mp-access-token/getStableAccessToken.html
    根据以上特性,为减少其他开发者构建中控服务的开发成本,在普通调用模式下,平台建议开发者将每次获取的 access_token 在本地建立中心化存储使用,无须考虑并行调用接口时导致意外情况发生,仅须保证至少每 5 分钟发起一次调用并覆盖本地存储。同时,该方案也支持各业务独立部署使用,即无须中心化存储也可以保证服务正常运行;
    bankroft
        2
    bankroft  
       13 天前   1
    可以使用 stable access token
    jstony
        3
    jstony  
       13 天前
    本地自建了一个 token 代理,各个系统都从代理获取当前可用 token ,代理会检查 token 有效期,接近过期会自动更新,已经用了很多年。
    lyxxxh2
        4
    lyxxxh2  
    OP
       13 天前
    @jackleo120
    你这个更简单,我才知道有这个。
    lyxxxh2
        5
    lyxxxh2  
    OP
       13 天前
    w7corp/[email protected] 还不支持'use_stable_access_token' => true`,注意升级。
    https://github.com/w7corp/easywechat/blob/6.4.0/src/OfficialAccount/AccessToken.php
    jackleo120
        6
    jackleo120  
       12 天前
    @lyxxxh2 直接手动造一个请求就可以了。他 5 分钟内的 token 都可以用的,可以平滑度过的。还不用管测试还是正式环境。。
    lyxxxh2
        7
    lyxxxh2  
    OP
       12 天前
    @jackleo120
    最后我也是用`stable_access_token`。
    手动构造倒是不用,改配置参数就行。
    然后发现改配置不管用,那个扩展包一更新大版本,我就用最新的。
    然而`stable_access_token`功能还没完成。
    最后我更新扩展包版本,完事了。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     3205 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 161ms UTC 11:02 PVG 19:02 LAX 03:02 JFK 06:02
    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