2010-05-15 2 views
5

Я использую API twitter для получения пользовательских твитов в режиме реального времени. Я использую формат ответа json. Недавно идентификатор tweet (в API - это просто «id») перенастроен неправильно. В качестве примераПочему неправильный идентификатор твита возвращается из twitter API?

обычно он должен вернуться, как этот: «ид»: 14057503720, (пример из щебет консоли) однако по моей просьбе он возвращается, как этот: «ид»: 1172601832

Это 1 меньше цифр, и это совершенно другое. Мне нужен правильный идентификатор, потому что я не могу использовать параметры, например, from_id или max_id.

ответ

5

Использовать id_str вместо id. Это, похоже, не документировано, но если вы посмотрите на исходный источник JSON, вы увидите, что id_str для каждого твита - это тот, который правильно соответствует идентификатору твита.

1

пример того, как получить идентификатор

$url = "http://search.twitter.com/search.json?q=QUERY"; //<--- replace the word QUERY for your own query 
$data = get_data($url); 
$obj = json_decode($data); 

function get_data($url){ 
    $ch = curl_init(); 
    $timeout = 5; 
    curl_setopt($ch,CURLOPT_URL,$url); 
    curl_setopt($ch,CURLOPT_RETURNTRANSFER,1); 
    curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,$timeout); 
    $data = curl_exec($ch); 
    curl_close($ch); 
    return $data; 
    } 

foreach ($obj->results as $item){ 
    $text = $item->text; 
    $user = $item-> from_user; 
    $img = $item->profile_image_url; 
    $tweetId = $item->id_str; // <--- On this line we are getting the ID of the tweet 

echo ' @'; 
echo $user; 
echo $text; 
echo 'Tweet ID: '. $tweetId; //<-- On this line we display the ID of the tweet 

Для получения дополнительной информации GET search | Twitter Developers

Пример запроса на линии 30 показывает "id_str":"122032448266698752" и вот причина использования $tweetId = $item->id_str; , чтобы получить id_str

2

Это 1 цифра меньше, и это совершенно другое. Мне нужен правильный идентификатор, потому что я не могу использовать параметры, например, from_id или max_id.

Это не всего разные; просто другой. Если вы пишете как идентификаторы в шестнадцатеричном, вы получите

0x345E47BE8 
0x45E47BE8 

Tweet IDs are 64-bit и где-то в разборе вы теряете самый значительный 32-битную половину. Используйте id_str как и другие (также в связанной статье).

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