php - 批量获取微信用户信息,在循环中多次请求微信url链接,带上的access_token失效
PHPz
PHPz 2017-04-10 15:54:06
0
8
936

在获取上万条微信信息时,用循环多次请求微信链接带上获取的access_token,但在运行的过程中出现这样的错误{"errcode":40001,"errmsg":"invalid credential, access_token is invalid or not latest"},循环过程中保存数据所用的时间也没有超过access_token的有效时间。代码如下:请问是怎么回事

PHPz
PHPz

学习是最好的投资!

reply all(8)
左手右手慢动作

7200秒有效你就应该获取了之后继续使用而不是120秒之后就再次获取,access_token每天获取次数是有限的。

access_token的有效期目前为2个小时,需定时刷新,重复获取将导致上次获取的access_token失效。

刘奇

楼主我能问你一个问题么 关于授权的

黄舟

题主你好,我遇到了与你类似的问题,在较短时间内,多次用access_token去调用微信其他接口总是会出现
{"errcode":40001,"errmsg":"invalid credential, access_token is invalid or not latest hint: [QZ.Jja0059ent1]"}
我是用定时器每一个小时内获取授权token,然后存到memcached缓存中。理论上讲,这一个小时内这个token一直是有效的,但结果是,每次频繁利用token调用其他的接口时,总会报token失效。
排除appsecret错误的问题,因为如果appsecret错误,所有调用结果都是失败,而不会只出现在利用token频繁调用其他接口的情况下。
这个问题那么长时间了,题主应该解决了吧?希望题主赐教。

巴扎黑

我现在也是遇到类似的问题 ,我设置access_token有效期是3600s ,我也是for循环 , 在for循环里面发送模板消息。,理论上access_token的有效期是7200s , 那么我设置3600s 应该可以的 过期之后我会重新的拉取!!

小葫芦

是啊,不知道为什么。我用了一个定时器没7200s去获取AccessToken,但是每次拿回来的AccessToken,发送支付客服消息,过一会儿就失效了。

测试的时候,发现即使是立刻刷新拿回来的token会抱42001的错误。不知道为什么,求赐教啊

伊谢尔伦

这个微信开发论坛管理员已经回答过了

所以可以采取的方案是去带token请求一个另外的没有次数限制的接口,如果token失效,重新生成TOKEN,如果没有失效,继续之前的逻辑

阿神

除了时间判断和集中存储的问题,更重要的是在使用时判断返回结果响应是否要更新AccessToken,微信服务器群集在处理AccessToken的时候本身就不同步。就以获取微信服务器IP地址为例,当你主动将AccessToken失效后,调用这个接口是一下成一下失败的,并且当你更新AccessToken后马上调用也会出现时好时坏的问题。折腾半天还是用了比较恶心的方式来处理的。

var userInfo = Invoke((token) => { return UserApi.Info(token, openid); });

在Invoke函数里进行最多3次重试的循环调用,如果发现失效则立即更新。

public static T Invoke<T>(Func<string, T> invokeFunc)
大家讲道理

加上判断,失效时重新获取Access token
可能有次数限制?

Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
About us Disclaimer Sitemap
php.cn:Public welfare online PHP training,Help PHP learners grow quickly!