2014-08-29 138 views
0

如何使用twitter api獲取json格式的所有推文?我已經檢查在下面的鏈接中給出的過程:Twitter:如何使用twitter api獲取json格式的所有推文

https://dev.twitter.com/docs/api/1.1/get/statuses/user_timeline

,但得到了一個錯誤:{「錯誤」:[{「消息」:「壞的認證數據」,「代碼」:215}] }

任何人都可以建議我該怎麼做。我不想使用嵌入式時間軸小部件。我只想以我的個人格式顯示我帳戶中的推文。

回答

0

問題是您的身份驗證方法 - API認爲您傳遞了錯誤的身份驗證數據。我不能確定你如何去這件事,但這個帖子詳細解釋了一些關於你所遇到的問題:

https://dev.twitter.com/discussions/11589

你應該首先着眼於驗證並確保正試圖獲得工作之前推文。隨意如果您有任何其他問題:)

0

我使用的代碼示例如下澄清:

$token = 'xxxxxx'; 
$token_secret = 'xxxxxx'; 
$consumer_key = 'xxxxxx'; 
$consumer_secret = 'xxxxxx'; 

$host = 'api.twitter.com'; 
$method = 'GET'; 
$path = '/1.1/statuses/user_timeline.json'; // api call path 

$query = array(// query parameters 
'screen_name' => 'twitterapi', 
'count' => '10' 
); 

$oauth = array(
'oauth_consumer_key' => $consumer_key, 
'oauth_token' => $token, 
'oauth_nonce' => (string)mt_rand(), // a stronger nonce is recommended 
'oauth_timestamp' => time(), 
'oauth_signature_method' => 'HMAC-SHA1', 
'oauth_version' => '1.0' 
); 

$oauth = array_map("rawurlencode", $oauth); // must be encoded before sorting 
$query = array_map("rawurlencode", $query); 

$arr = array_merge($oauth, $query); // combine the values THEN sort 

asort($arr); // secondary sort (value) 
ksort($arr); // primary sort (key) 

// http_build_query automatically encodes, but our parameters 
// are already encoded, and must be by this point, so we undo 
// the encoding step 
$querystring = urldecode(http_build_query($arr, '', '&')); 

$url = "https://$host$path"; 

// mash everything together for the text to hash 
$base_string = $method."&".rawurlencode($url)."&".rawurlencode($querystring); 

// same with the key 
$key = rawurlencode($consumer_secret)."&".rawurlencode($token_secret); 

// generate the hash 
$signature = rawurlencode(base64_encode(hash_hmac('sha1', $base_string, $key, true))); 

// this time we're using a normal GET query, and we're only encoding the query params 
// (without the oauth params) 
$url .= "?".http_build_query($query); 
$url=str_replace("&","&",$url); //Patch by @Frewuill 

$oauth['oauth_signature'] = $signature; // don't want to abandon all that work! 
ksort($oauth); // probably not necessary, but twitter's demo does it 

// also not necessary, but twitter's demo does this too 
function add_quotes($str) { return '"'.$str.'"'; } 
$oauth = array_map("add_quotes", $oauth); 

// this is the full value of the Authorization line 
$auth = "OAuth " . urldecode(http_build_query($oauth, '', ', ')); 

// if you're doing post, you need to skip the GET building above 
// and instead supply query parameters to CURLOPT_POSTFIELDS 
$options = array(CURLOPT_HTTPHEADER => array("Authorization: $auth"), 
       //CURLOPT_POSTFIELDS => $postfields, 
       CURLOPT_HEADER => false, 
       CURLOPT_URL => $url, 
       CURLOPT_RETURNTRANSFER => true, 
       CURLOPT_SSL_VERIFYPEER => false); 

// do our business 
$feed = curl_init(); 
curl_setopt_array($feed, $options); 
$json = curl_exec($feed); 
curl_close($feed); 

$twitter_data = json_decode($json); 

,最後我得到的結果集的數組。

相關問題