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

2018-07-02 09:52:52 +08:00
 lcy630409

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

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

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

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

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



我这边目前是暴露了一个接口,加了个密码 /JWT 的权限认证。同时我重新生成了一个密码,密码没有再告诉任何人,只有我自己保存了密码 app_secret
lcy630409
2018-07-06 16:00:08 +08:00
@wangxl 多进程 当然程序也就一样,调用也就一样了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/467362

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX