Php Twitter用户时间线代码不工作

Php Twitter用户时间线代码不工作,php,twitter,Php,Twitter,我创建这个测试脚本是为了从twitter usertimeline中获取数据,我确信它以前是有效的,但是现在它什么也不返回。这里有我遗漏的东西吗?(只需修改顶部的常数即可进行测试) 定义('CONSUMER_KEY',''); 定义(‘消费者秘密’,“”); 定义('OAUTH_标记',''); 定义('OAUTH_SECRET',''); 定义('USER_ID',''); 函数generateSignature($oauth,$fullurl,$http_方法){ //从url获取参数 $m

我创建这个测试脚本是为了从twitter usertimeline中获取数据,我确信它以前是有效的,但是现在它什么也不返回。这里有我遗漏的东西吗?(只需修改顶部的常数即可进行测试)

定义('CONSUMER_KEY','');
定义(‘消费者秘密’,“”);
定义('OAUTH_标记','');
定义('OAUTH_SECRET','');
定义('USER_ID','');
函数generateSignature($oauth,$fullurl,$http_方法){
//从url获取参数
$main_url=explode(“?”,$fullurl);
$url=explode('&',$main_url[1]);
foreach($url作为$param){
$bits=分解('=',$param);
if(strlen($bits[0])){
$oauth[$bits[0]]=rawurlencode($bits[1]);
}    
}
ksort($oauth);
$string=http\u build\u query($oauth);
$new_string=strtoupper($http_方法)。'&'.urlencode($main_url[0])。&.urlencode(urldecode($string));
$sign\u str=消费者秘密.&'.OAUTH\u秘密;
返回urlencode(base64_encode(hash_hmac('sha1',$new_string,$sign_str,true));
} 
函数随机($len,$use\u chars=false,$numU=false){
$num=范围(0,9);
$letu=范围('A','Z');
$letl=范围('a','z');
$chars=数组(“!”、“*”、“£”、“$”、“^”、“(“,”)、“”、“+”;
如果($使用字符){
$arr=array\u merge($num、$letu、$letl、$chars);
}否则{
$arr=array\u merge($num、$letu、$letl);
}
//洗牌-新增加的11/9,使订单实际上随机!
洗牌($arr);
//创建一个仅限数字的随机字符串
如果($numU){$arr=$num;}
$rand=array\u rand($arr,$len);
foreach(兰特为$num){
$out[]=$arr[$num];
}
返回内爆(“”,$out);
}
$method='GET';
//Twitter仍然使用Oauth1(这是一种痛苦)
$oauth=数组(
'oauth_consumer_key'=>consumer_key,
'oauth_nonce'=>随机(32),
“oauth_签名_方法”=>“HMAC-SHA1”,
'oauth_timestamp'=>time(),
“oauth_令牌”=>oauth_令牌,
“oauth_版本”=>“1.0”,
);                    
$url=”https://api.twitter.com/1.1/statuses/user_timeline.json?user_id=“.USER_ID;
$oauth['oauth_signature']=generateSignature($oauth,$url,$method');
ksort($oauth);
foreach($oauth作为$k=>$v){
$auths[]=$k.='.$v.''.';
}
$stream=array('http'=>
排列(
“方法”=>$method,
//忽略错误应为真
“忽略错误”=>true,//http://php.net/manual/en/context.http.php -否则浏览器将返回错误而不是错误内容
“跟随位置”=>false,
“最大重定向”=>0,
'header'=>数组(
“Authorization:OAuth.”内爆(“,”,$auths),
'连接:关闭'
)                                             
)
);                                                                                                                 
echo$url;
$response=file_get_contents($url,false,stream_context_create($stream));
打印“”;打印(流);打印“”;
打印“[”;打印($reponse);打印“]”;
我发现:

我不完全确定,但我认为在
if($numU){$arr=$num;
我认为这应该是一个开放的括号{

我还发现了一件事:

print'[';print_r($response);print'];
在代码的底部,您编写了“$response”而不是“$response”


我希望它有帮助!如果有,请投赞成票并选择最佳答案!

您是否对照API服务器的时区检查了服务器的时区?我知道过去我有一个Twitter API脚本因为这个原因停止工作。不过,您是否能够运行/测试上述代码?好吧,halmi4,这是您可能遇到的最简单的50分这是$response部分,恭喜你,谢谢你花时间看它。有时候你看不到最简单的东西,在编程中。
define('CONSUMER_KEY', '');
define('CONSUMER_SECRET', '');
define('OAUTH_TOKEN','');
define('OAUTH_SECRET','');
define('USER_ID','');

function generateSignature($oauth,$fullurl,$http_method){        

// Take params from url
$main_url = explode('?',$fullurl);        

$urls = explode('&',$main_url[1]);

foreach ($urls as $param){
$bits = explode('=',$param);
if (strlen($bits[0])){
$oauth[$bits[0]] = rawurlencode($bits[1]);
}    
}

ksort($oauth);

$string = http_build_query($oauth);

$new_string = strtoupper($http_method).'&'.urlencode($main_url[0]).'&'.urlencode(urldecode($string));           

$sign_str = CONSUMER_SECRET.'&'.OAUTH_SECRET;

return urlencode(base64_encode(hash_hmac('sha1',$new_string,$sign_str,true)));        
} 

function random($len,$use_chars = false,$numU = false){
$num = range(0,9);
$letu = range('A','Z');
$letl = range('a','z');
$chars = array("!","*","£","$","^","(",")","_","+");

if ($use_chars){
$arr = array_merge($num,$letu,$letl,$chars);
} else {
$arr = array_merge($num,$letu,$letl);
}

// Shuffling - new addition 11/9 to make order actually random!
shuffle($arr);

// Create a number only random string
if ($numU){ $arr = $num; }

$rand = array_rand($arr,$len);
foreach ($rand as $num){
$out[] = $arr[$num];
}

return implode('',$out);
}

$method = 'GET';

// Twitter still uses Oauth1 (which is a pain)
$oauth = array(
'oauth_consumer_key'=>CONSUMER_KEY,
'oauth_nonce'=>random(32),
'oauth_signature_method'=>'HMAC-SHA1',
'oauth_timestamp'=>time(),
'oauth_token'=>OAUTH_TOKEN,
'oauth_version'=>'1.0',
);                    

$url = "https://api.twitter.com/1.1/statuses/user_timeline.json?user_id=".USER_ID;

$oauth['oauth_signature'] = generateSignature($oauth,$url,$method,'');                                

ksort($oauth);

foreach ($oauth as $k=>$v){
$auths[] = $k.'="'.$v.'"';
}

$stream = array('http' =>
array(
'method' => $method,
// ignore_errors should be true
'ignore_errors'=>true, // http://php.net/manual/en/context.http.php - otherwise browser returns error not error content
'follow_location'=>false,
'max_redirects'=>0,
'header'=> array(
'Authorization: OAuth '.implode(', ',$auths),
'Connection: close'
)                                             
)
);                                                                                                                 

echo $url;                                                 
$response = file_get_contents($url, false, stream_context_create($stream));

print'<pre>';print_r($stream);print'</pre>';
print'<pre>[';print_r($reponse);print']</pre>';
// Create a number only random string
if ($numU){ $arr = $num; }

$rand = array_rand($arr,$len);
foreach ($rand as $num){
$out[] = $arr[$num];
}
print'<pre>[';print_r($reponse);print']</pre>';