V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
lcy630409
V2EX  ›  问与答

微信公众号开发中的问题,模板消息返回 40001

  •  
  •   lcy630409 · 2018-07-02 09:52:52 +08:00 · 4184 次点击
    这是一个创建于 2369 天前的主题,其中的信息可能已经有所发展或是发生改变。

    最近批量发送模板消息 偶尔返回 40001,但是消息 用户却收到了,导致程序不停的重发,用户不停的收到同一个模板消息,,好多用户都取消关注了 - -,再这么下去 要辞职跑路了,有遇到这种问题的么,求解决办法, 顺便严重鄙视腾讯,TM 一个技术客服都没,迟早关闭!

    18 条回复    2018-07-06 16:00:08 +08:00
    zhuyao
        1
    zhuyao  
       2018-07-02 09:59:24 +08:00
    应该是 access_token 过期了,你存到缓存失效时间设置为 1 个小时或者 1 个半小时
    lcy630409
        2
    lcy630409  
    OP
       2018-07-02 10:09:51 +08:00
    @zhuyao 过期的问题,当然测试过,即使刚获取到的 token 放在浏览器中使用,也偶尔会报 40001
    weer0026
        3
    weer0026  
       2018-07-02 10:20:59 +08:00
    access token 是全局的,新获取的会导致之前的过期,估计这个公众号在其他地方也用到 access token 了,导致两边互相争夺。
    qiayue
        4
    qiayue  
       2018-07-02 10:32:10 +08:00
    如果是 access_token 过期,返回的是 40014。

    40001 获取 access_token 时 AppSecret 错误,或者 access_token 无效。请开发者认真比对 AppSecret 的正确性,或查看是否正在为恰当的公众号调用接口

    多说两句,access_token 获取之后一定要保存起来,在有效期内可以直接使用,而不是每次使用都获取一遍。
    并且一个公众号只能用一个获取 access_token 的服务,其他地方需要使用 access_token 都统一使用这个服务来获取。
    lcy630409
        5
    lcy630409  
    OP
       2018-07-02 10:39:19 +08:00
    @weer0026 排查过,没有这种情况,因为这个问题是最近不久才出现的,之前一直是没问题的,代码也没有修改过,像我回复上面的那个同学的一样,即使是新获取到的 token,在浏览器中访问偶尔都报 40001
    lcy630409
        6
    lcy630409  
    OP
       2018-07-02 10:40:51 +08:00
    @qiayue 这个当然是按照规范来的,token 存了 5000s
    zhuyao
        7
    zhuyao  
       2018-07-02 10:46:42 +08:00
    @weer0026 对对,这个我遇到过
    lcy630409
        8
    lcy630409  
    OP
       2018-07-02 10:52:21 +08:00
    @zhuyao 现在严重的问题是 微信返回了 40001,按理说 没有发送出去吧,但是用户是收到的,但是我们程序判断没有发送成功,然后继续重发.....
    weer0026
        9
    weer0026  
       2018-07-02 10:53:50 +08:00
    @lcy630409 #5 我这边也有批量发送模板消息的,不过是队列慢慢跑的,没遇到过这样的问题,你可以试试减少同时发送的数量,增加发送间隔,也许腾讯那边有速率限制。
    zhuyao
        10
    zhuyao  
       2018-07-02 11:06:38 +08:00
    @lcy630409 没有遇到过这种奇葩问题。不过有没有可能你某个地方调了两遍发送模版消息,第一遍是成功的,第二遍获取了错误的 access_token 或者空的发送报 40001。
    lcy630409
        11
    lcy630409  
    OP
       2018-07-02 11:10:53 +08:00
    @weer0026 - -不行啊 会员有 160w,有些模板消息要是慢一点就超过了规定的时间了,之前也是这样发的,没啥问题,最近才出现,排除了修改代码引起的问题,就只有问问大家了,,关键是腾讯这货,文档写的坑爹就算了,技术客服都没,每次在微信上反馈 都让自行排查,要他何用!
    lcy630409
        12
    lcy630409  
    OP
       2018-07-02 11:12:02 +08:00
    @zhuyao 没有一次成功,日志里在那个时间里 没有一个成功的,间隔很久再发就没问题了,但是又会偶尔出现
    qiayue
        13
    qiayue  
       2018-07-02 11:25:47 +08:00
    你这是把模板消息当广告使用,小心被投诉,封掉你的接口
    lcy630409
        14
    lcy630409  
    OP
       2018-07-02 11:40:01 +08:00
    @qiayue 没啊,赠送优惠券 代金券,都是用户有购买行为才发的,然后有生日卷,生日卷是集中发送的,注册卷和推荐卷 都是第二天发送,应该不会被封 = =
    wangxl
        15
    wangxl  
       2018-07-04 19:19:15 +08:00
    我遇到了这个问题,我这边的情况是
    # 其它服务利用 app_id, app_secret 获取的新的 access_token, 然后 我们这边的 access_token 5 分钟之后就失效了

    解决方案就是大统一一个地方获取唯一的 access_token, 不要两个地方都去获取新的.

    ## access_token 全局唯一,当有新的,以前旧的 5 分钟之后就失效了
    lcy630409
        16
    lcy630409  
    OP
       2018-07-05 10:00:39 +08:00
    @wangxl 我这边只有我这一个程序在刷新 token
    wangxl
        17
    wangxl  
       2018-07-05 15:35:45 +08:00
    @lcy630409 你是多线程在获取吗?多进程吗?多台服务器都在获取 token 吗?

    一定要保证全局唯一一个地方获取 token , 其它服务、线程、进程都从这一个地方取 token



    我这边目前是暴露了一个接口,加了个密码 /JWT 的权限认证。同时我重新生成了一个密码,密码没有再告诉任何人,只有我自己保存了密码 app_secret
    lcy630409
        18
    lcy630409  
    OP
       2018-07-06 16:00:08 +08:00
    @wangxl 多进程 当然程序也就一样,调用也就一样了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5645 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 01:42 · PVG 09:42 · LAX 17:42 · JFK 20:42
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.