Files
zyt/server/clear_wx_token_cache.php
2026-03-06 14:27:24 +08:00

98 lines
2.8 KiB
PHP

<?php
/**
* 清除微信AccessToken缓存脚本
* 用于解决 AccessToken 失效问题
*/
require __DIR__ . '/vendor/autoload.php';
// 初始化应用
$app = new think\App();
$app->initialize();
echo "=== 清除微信AccessToken缓存 ===\n\n";
// 获取小程序配置
$appId = \app\common\service\ConfigService::get('mnp_setting', 'app_id', '');
if (empty($appId)) {
echo "✗ 错误: 未配置小程序AppID\n";
echo "请先在后台配置小程序信息\n";
exit(1);
}
echo "小程序AppID: {$appId}\n";
// 清除缓存
$cacheKey = 'wx_access_token_' . $appId;
$oldToken = cache($cacheKey);
if ($oldToken) {
echo "旧Token: {$oldToken}\n";
cache($cacheKey, null);
echo "✓ 已清除缓存的AccessToken\n";
} else {
echo "✓ 缓存中没有AccessToken\n";
}
// 尝试重新获取
echo "\n=== 尝试重新获取AccessToken ===\n\n";
$appSecret = \app\common\service\ConfigService::get('mnp_setting', 'app_secret', '');
if (empty($appSecret)) {
echo "✗ 错误: 未配置小程序AppSecret\n";
exit(1);
}
$url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={$appId}&secret={$appSecret}";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
$response = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
echo "HTTP状态码: {$httpCode}\n";
echo "响应内容: {$response}\n\n";
$result = json_decode($response, true);
if (isset($result['access_token'])) {
echo "✓ AccessToken获取成功!\n";
echo "Token: {$result['access_token']}\n";
echo "有效期: {$result['expires_in']}\n";
// 缓存新Token
cache($cacheKey, $result['access_token'], 7000);
echo "\n✓ 已缓存新的AccessToken\n";
echo "\n=== 操作完成 ===\n";
echo "现在可以重新尝试生成小程序码了\n";
} else {
echo "✗ AccessToken获取失败!\n";
if (isset($result['errcode'])) {
echo "错误码: {$result['errcode']}\n";
echo "错误信息: {$result['errmsg']}\n\n";
// 常见错误提示
switch ($result['errcode']) {
case 40013:
echo "提示: AppID无效,请检查配置\n";
break;
case 40125:
echo "提示: AppSecret无效,请检查配置或重置AppSecret\n";
break;
case 40164:
echo "提示: IP不在白名单中,请在微信公众平台添加服务器IP\n";
break;
default:
echo "请参考微信官方文档: https://developers.weixin.qq.com/miniprogram/dev/framework/usability/PublicErrno.html\n";
}
}
exit(1);
}