收藏
回答

关于企业微信access_token 获取机制返回值

通过https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=ID&corpsecret=SECRET接口获取 access_token,返回值如下:

  1. {
  2. "errcode": 0,
  3. "errmsg": "ok",
  4. "access_token": "accesstoken000001",
  5. "expires_in": 7200
  6. }

并且这个接口还支持重取,相同有效期内获取出来的都是同一个,并且expire_in每次都返回7200

这样会导制一个情况,如果第一次获取了token没有及时保存上,后面再取的时候会默认有效期为7200,但实际有效期已经没有7200秒了,也没办法强制重取一个真实有效期为7200秒的token,这时保存token就不能正确记录token的有效期。

这个expire_in能不能返回当前真实的有效期呢

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

4 个回答

  • 企业微信运营专员-千夜
    企业微信运营专员-千夜
    2021-06-07

    你好,在有效时间内,调用接口获取的accesstoken其实是同一个,而且accesstoken的有效期是2-4小时,不一定两小时一到就直接失效了,所以这里建议是根据返回的错误码再来进行获取新的accesstoken,当返回42001时就重新获取一遍accesstoken

    2021-06-07
    有用
    回复
  • Evidence
    Evidence
    2021-06-04

    token失效检测下吧。redis 存储一般不会失败

    2021-06-04
    有用 1
    回复 4
    • 2021-06-04
      对但有很多情况会遇到这个问题,比如你因为业务需要清空了缓存,然后连带access_token也清除了。或者另外一个项目挂在相同的应用下面,但是没做接口共享access_token,那边重取了一个。
      2021-06-04
      回复
    • Evidence
      Evidence
      2021-06-04回复
      做下隔离吧。业务缓存清空了跟你这种交互的服务有啥关系啊 不是个玩个的吗
      2021-06-04
      回复
    • Evidence
      Evidence
      2021-06-04
      比如我这 业务都是PHP  连的自己的redis 对接第三方的服务都是go也是自己的redis  go消费PHP产生的任务就好了 ,互不干扰  多好
      2021-06-04
      回复
    • 卡内奇
      卡内奇
      2023-05-31
      你这跟没回答有啥区别,接口每次都返回7200秒 跟没返回有啥区别? redis不管是第一次获取接口存入,还是快过期的时候存入,都返回的是7200秒 ,你知道redis应该存多久? 每次人家调很多业务接口的时候去判断token有没有过期,你返回这个失效时间干什么? 自己接口不强壮,让业务来判断。。。你去抄袭一下别人的token设计也不会这么烂。。看懂人家问的问题好吗
      2023-05-31
      1
      回复
  • 🇶 🇮
    🇶 🇮
    2022-05-17

    过期的错误码只会是42001 吗?


    2022-05-17
    有用
    回复
  • 郭定国
    郭定国
    2021-06-04

    重新请求expire_in就重置了

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