现在一直在跳invalid signature签名错误,不知道如何解决,是等一段时间就行了还是就不能用了?
现在一直在跳invalid signature签名错误,不知道如何解决,是等一段时间就行了还是就不能用了?
微信上文档好像说的是 access_token 7200秒过期,
所以,我们只需要简单的写一下文件来达到缓存的目的就可以了,
例如下面的代码就是先去读缓存,如果没有的话,再去微信请求一遍
$token = Lib_Cache::read('access_token', 3600);
if (!$token || strlen($token) < 6) {
$res = file_get_contents('https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid='.Lib_Weixin::$appId.'&secret='.Lib_Weixin::$appSecret);
$res = json_decode($res, true);
$token = $res['access_token'];
Lib_Cache::write('access_token', $token, 3600);
}
return $token;
这样独立以后,缓存部分可以替换为任意方案,我在这儿就简单的以文件为例子了,主要是我也用的文件,不麻烦:
class Lib_Cache {
public static function read($file, $expires) {
if(file_exists($file)) {
$time = filemtime($file);
if(time() - $time > $expires) {
return null;
}else {
return file_get_contents($file);
}
}
return null;
}
public static function write($file, $value) {
@file_put_contents($file, $value);
}
}
access_token的请求,一天有2000次的限制,但7200秒过期,所以就3600秒一个小时一次,怎么用也不会过期的
10 回答11.2k 阅读
5 回答4.8k 阅读✓ 已解决
4 回答3.1k 阅读✓ 已解决
2 回答2.7k 阅读✓ 已解决
3 回答2.3k 阅读✓ 已解决
3 回答2.1k 阅读✓ 已解决
2 回答2.6k 阅读✓ 已解决
那就缓存一下呗。有条件上memcache,redis,简单点直接用文件缓存也行(官方的demo就是)