2014-08-29 2 views
0

Как я могу получить все твиты в формате json с помощью twitter api? Я уже проверил процесс, приведенный в ссылке ниже:Twitter: Как я могу получить все твиты в формате json с помощью twitter api

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); 

и, наконец, я получил массив результирующих.

Смежные вопросы