调用Twitter API会导致“Timestamp out of bounds”错误

时间:2018-03-23 05:46:14

标签: twitter oauth postman twitter-oauth

我正在调用Twitter获取用户时间线详细信息。这是我的代码     

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => "https://api.twitter.com/1.1/statuses/user_timeline.json?screen_name=twitterapi",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 30,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => "GET",
  CURLOPT_HTTPHEADER => array(
    "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\"",
      "cache-control: no-cache"
  ),
));

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
  echo "cURL Error #:" . $err;
} else {
  echo $response;
}    

我可以获取详细信息。但过了一天我得到了这个回复

  

{“errors”:[{“code”:135,“message”:“时间戳超出范围。”}]}

我的令牌是否已过期?我想将此代码作为后台请求运行。

1 个答案:

答案 0 :(得分:0)

oauth_timestamp应该是自1970年1月1日00:00:00 UTC以来的整秒数。

  

{“errors”:[{“code”:135,“message”:“时间戳超出范围。”}]}

通常意味着您的服务器/机器时间超过30秒(实际时间不包括时区差异)。查看响应标题,看看Twitter的时间是什么。

oauth_timestamp = 1521786006