- 用相同的AccessToken请求接口,偶尔会报40001
用接口https://api.weixin.qq.com/cgi-bin/token和小程序的appid和sercet请求AccessToken ,然后用这一个AccessToken反复请求需要Token的接口,偶尔会报40001,然后又可能成功, 交替返回不同的结果,是什么原因呢?
2019-07-22 - 微信公众号 access_token 40001时好时坏?
这段时间非常频繁,同一个 access_token 有时没有问题,有时有说过期。下面是日志 同一个access_token ============================================成功的=============================================== [[[接口调用]]] [2019/8/26 13:56:04] [线程:15] URL:https://api.weixin.qq.com/cgi-bin/message/custom/send?access_token=24_pppFPnAEMqvoe9tPpJSHg-iK8fnINfL5bG4lpvtWwb9XFD_elm_aM-vLlerMcGZiwf8oYrYy8I-Gvrft0b3s3lkzWUpdi12kBjs8AVfcf1fJ0glOR_aoJUOISxhlij1J_UVB8EsLwMitTt9DVEJiAHACLQ Result: {"errcode":0,"errmsg":"ok"} =======================================失败的========================= [[[接口调用]]] [2019/8/26 13:56:04] [线程:15] URL:https://api.weixin.qq.com/cgi-bin/message/custom/send?access_token=24_pppFPnAEMqvoe9tPpJSHg-iK8fnINfL5bG4lpvtWwb9XFD_elm_aM-vLlerMcGZiwf8oYrYy8I-Gvrft0b3s3lkzWUpdi12kBjs8AVfcf1fJ0glOR_aoJUOISxhlij1J_UVB8EsLwMitTt9DVEJiAHACLQ Result: {"errcode":40001,"errmsg":"invalid credential, access_token is invalid or not latest hint: [7y0Q_a0964z200!]"} =============================================成功的============================================== [[[接口调用]]] [2019/8/26 13:56:08] [线程:8] URL:https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=24_pppFPnAEMqvoe9tPpJSHg-iK8fnINfL5bG4lpvtWwb9XFD_elm_aM-vLlerMcGZiwf8oYrYy8I-Gvrft0b3s3lkzWUpdi12kBjs8AVfcf1fJ0glOR_aoJUOISxhlij1J_UVB8EsLwMitTt9DVEJiAHACLQ Result: {"errcode":0,"errmsg":"ok","msgid":959769122332639232} [[[接口调用]]] [2019/8/26 13:56:08] [线程:8] URL:https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=24_pppFPnAEMqvoe9tPpJSHg-iK8fnINfL5bG4lpvtWwb9XFD_elm_aM-vLlerMcGZiwf8oYrYy8I-Gvrft0b3s3lkzWUpdi12kBjs8AVfcf1fJ0glOR_aoJUOISxhlij1J_UVB8EsLwMitTt9DVEJiAHACLQ Result: {"errcode":0,"errmsg":"ok","msgid":959769126661160961} ===============================================失败的============================================ [[[接口调用]]] [2019/8/26 13:56:12] [线程:62] URL:https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=24_pppFPnAEMqvoe9tPpJSHg-iK8fnINfL5bG4lpvtWwb9XFD_elm_aM-vLlerMcGZiwf8oYrYy8I-Gvrft0b3s3lkzWUpdi12kBjs8AVfcf1fJ0glOR_aoJUOISxhlij1J_UVB8EsLwMitTt9DVEJiAHACLQ Result: {"errcode":40001,"errmsg":"invalid credential, access_token is invalid or not latest hint: [09724694!]"}
2019-08-27 - 微信模板消息发送在access_token未失效的情况,发送接口间歇性出现40001错误
接口地址:https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=%s 1. 首先微信access_token由中控服务定时刷新获取并存于redis中,每小时重置一次,官方给到的每次失效时间7200s即两个小时,因此首先排除access_token失效或过期的问题; 2. 接口调用时间歇性出现40001错误,且凭此较高,服务器部分日志如下:[图片] 短短几个小时竟出现如此多的40001错误,由于客户依赖于该消息获取验证码,及时性要求较高,着实让人头大,虽然优化了业务代码逻辑,延时幂等重试10次,优化过后依然会有10次都未成功的情况;为了保证其推送到客户微信端,10次过后仍然失败,采取临时重置access_token,再做一次最后的掘强,基本能成功;但是如此一来客户收到消息的时间2分钟开外,指标不治本,不,连标都没得治!!!如下:重试第七次才成功,请问程序猿有九条命么????[图片] 以上问题望微信官方引起重视,尽快修复改bug!!!
2019-12-18 - getSetting无法获取订阅消息的订阅状态
wx.getSetting({ withSubscriptions:true, //这句怎么无效 success(e) { console.log(e) } }) 没有返回 用户订阅消息的订阅状态
2020-01-07 - 「笔记」订阅消息-订阅次数维护
前言 距离1月10日模板消息下架只有2天了,在社区里经常能看到有帖子在问关于怎么记录订阅次数的问题,这里在这里介绍一下自己用的简单方案,仅供参考。 误区一 [图片] 上面这个图大家应该都比较熟悉了,很多人总是误以为勾选“总是保持以上选择,不再询问”,就可以无限发送订阅消息,这个是错误的想法,勾选和不勾选唯一的区别就是每次触发订阅的时候会不会弹授权窗口而已。 误区二 订阅消息不能通过bindsubmit的方式触发,必须通过bindtap的方式触发。 误区三 触发订阅窗口后,不管用户点击了允许还是取消,都会进入订阅消息的success回调中,所以通过这个来判断用户是否订阅是错误的。 订阅次数的维护 先看下官方的文档: [图片] 那么我们该如何使用呢? 我们通过 wx.requestSubscribeMessage 接口发送的时候是知道需要让用户订阅哪几个模板的,就是 tmplIds 这个参数填的数组。那么根据官方文档的回调内容,我们就可以直接在success内去获取对应的key所返回的状态。把获取到的状态分别存入自己的数据库里。发送的时候去数据库里查询需要发送的模板并且状态为accept的去发送,如果发送成功则删除一条记录(因为没有过期一说,所以随便删除哪一条记录都不影响)。 参考代码 [图片] 查询模板订阅状态 需要基础库大等于2.10.0才支持。 wx.getSetting({ withSubscriptions: true, success (res) { console.log(res) } }) 官方文档 补充 如果用户选择了不再接收消息会清空之前的订阅次数,但是这个不会主动告诉开发者,所以发送订阅消息失败后,需要根据返回内容自行清空记录,重新计算。 相关文章 「笔记」订阅消息-订阅次数维护(2020年3月更新改动) 「笔记」订阅消息体验踩坑
2020-03-06 - 一眼告诉你什么是订阅消息了,看完就懂订阅消息。
消息通知有两种: 一、A的动作后,发消息给A自己,这种容易解决,不多说明; 二、A动作后,发消息给B(比如管理员、店家、楼主),如何保证B收到消息?这种是本方案要解决的问题。 一张图片一眼告诉你什么是订阅消息,产品经理的设计UI居然让人一眼就知道订阅消息是什么玩意。 [图片] 用户 B (管理员、商家、组长、楼主)在知道订阅数不足后,打开小程序来续订阅数,否则没法收到订阅消息。 [图片] 补充一: 关于勾选按钮,请注意话述是:“总是保持以上选择,不再询问”,而不是:“总是同意接收订阅消息”,不要幻想就成了永久性订阅消息; 相当于你打电话订外卖,对店家说“老样子”,店家只会马上送一次外卖,而不是会以后每天自动给你送外卖了。 勾选和不勾选的区别是什么呢? 区别仅仅是:不勾选时,必须点击订阅10次,弹窗10次;勾选后,仍然必须点击订阅10次,但是不弹窗。无论如何“订阅”这个点击n次的动作少不了。 补充二: 一旦勾选后,就不可逆了,没有任何办法恢复或取消勾选了,除非你小程序MP后台换一次消息模板号(删除模板,重新添加一次)。 补充三: 关于如何保存订阅数。 保存在数据库中,笔者用的是云开发,数据库表user结构如下: { _id:'openid1', nickName:'老张', msg:{ "tempId1":5, "tempId2":7, } } 补充四: 关于如何获取订阅数。两种方式: 一、wx.requestSubscribeMessage的回调success里获取; 二、消息推送机制获取;https://developers.weixin.qq.com/miniprogram/dev/framework/server-ability/message-push.html
2022-09-21