调用Twitter API获取用户时间线遇Timestamp out of bounds错误排查
解答你的Twitter API Timestamp错误问题
Hey there! Let's clear up your confusion first: 错误码135不是Token过期导致的。Twitter的Token过期错误通常是code:89,而code:135明确指向「时间戳超出允许范围」,核心问题出在OAuth签名的时间同步或者参数静态化上。
为什么会出现这个错误?
Twitter的OAuth 1.0认证对请求的时间同步要求非常严格——你的服务器时间和Twitter服务器时间的偏差不能超过15分钟左右。另外看你的代码,Authorization头里的oauth_timestamp、oauth_nonce甚至oauth_signature都是硬编码的固定值:
"authorization: OAuth oauth_consumer_key=\"XXXXXXX\",oauth_token=\"XXXXXXX\",oauth_signature_method=\"HMAC-SHA1\",oauth_timestamp=\"XXXXXXX\",oauth_nonce=\"XXXXXXXX\",oauth_version=\"1.0\",oauth_signature=\"XXXXXXX\""
这绝对是问题所在:
oauth_timestamp必须是当前请求时刻的Unix时间戳(秒级),不能用固定值oauth_nonce是每次请求唯一的随机字符串,用来防止重放攻击,也不能固定oauth_signature是基于timestamp、nonce、请求URL等参数计算出来的签名,只要前面的参数变了,签名必须重新生成,硬编码的签名只会在第一次请求时有效
如何修复?
1. 改用成熟的OAuth库(推荐)
手动处理OAuth 1.0的签名很容易出错,建议使用PHP社区维护的Twitter OAuth库,比如abraham/twitteroauth。它会自动帮你生成正确的timestamp、nonce和签名,不用手动拼接请求头。
示例代码(用该库):
require_once('twitteroauth/autoload.php'); use Abraham\TwitterOAuth\TwitterOAuth; $consumerKey = '你的Consumer Key'; $consumerSecret = '你的Consumer Secret'; $accessToken = '你的Access Token'; $accessTokenSecret = '你的Access Token Secret'; $connection = new TwitterOAuth($consumerKey, $consumerSecret, $accessToken, $accessTokenSecret); $connection->setTimeouts(30, 30); // 设置超时 $params = ['screen_name' => 'twitterapi']; $response = $connection->get('statuses/user_timeline', $params); if ($connection->getLastHttpCode() !== 200) { echo "请求错误: " . json_encode($response); } else { echo json_encode($response); }
2. 手动修复你的现有代码(不推荐,但适合理解原理)
如果坚持自己写cURL,必须动态生成关键参数:
- 生成当前Unix时间戳:
$timestamp = time(); - 生成随机nonce:
$nonce = uniqid(mt_rand(), true); - 重新计算HMAC-SHA1签名(这部分比较复杂,需要按照OAuth 1.0的签名规范拼接参数、排序、编码后再签名)
另外,务必确保你的后台服务器开启NTP时间同步,让服务器时间和全球标准时间保持一致,避免时间偏差触发这个错误。
后台运行的建议
如果要把这个请求作为后台任务运行:
- 用系统的
cron(Linux)或任务计划(Windows)定期触发脚本,避免长时间运行的进程 - 添加错误重试机制:如果遇到135错误,先尝试同步服务器时间,再重试请求
- 记录日志:把请求的时间、响应状态、错误信息写入日志文件,方便排查问题
- 避免频繁请求:遵守Twitter API的速率限制(
statuses/user_timeline的速率限制是15分钟内900次请求)
内容的提问来源于stack exchange,提问作者John Doe
相关产品推荐
相关产品推荐

