Intereting Posts

Zend Framework: как получить мои статусы из твиттера

Я хочу показать свои последние 5 или 10 статусов из Twitter на моем сайте. На данный момент я использую следующий код, чтобы получить статус моего твиттера.

public function getOrganizationsTwitterUpdates(){ $twitter = new Zend_Service_Twitter('myusername', 'mypassword'); $response = $twitter->status->userTimeline(); return $response; } 

И я должен ответить на следующий код.

 Zend_Rest_Client_Result Object ( [_sxml:protected] => SimpleXMLElement Object ( [@attributes] => Array ( [type] => array ) [status] => Array ( [0] => SimpleXMLElement Object ( [created_at] => Wed Dec 30 11:02:13 +0000 2009 [id] => 7192975030 [text] => This is my 2nd tweet. [source] => web [truncated] => false [in_reply_to_status_id] => SimpleXMLElement Object ( ) [in_reply_to_user_id] => SimpleXMLElement Object ( ) [favorited] => false [in_reply_to_screen_name] => SimpleXMLElement Object ( ) [user] => SimpleXMLElement Object ( [id] => 100469557 [name] => naveed [screen_name] => naveedriksof [location] => SimpleXMLElement Object ( ) [description] => SimpleXMLElement Object ( ) [profile_image_url] => http://s.twimg.com/a/1262113883/images/default_profile_6_normal.png [url] => SimpleXMLElement Object ( ) [protected] => false [followers_count] => 0 [profile_background_color] => 9ae4e8 [profile_text_color] => 000000 [profile_link_color] => 0000ff [profile_sidebar_fill_color] => e0ff92 [profile_sidebar_border_color] => 87bc44 [friends_count] => 0 [created_at] => Wed Dec 30 10:59:31 +0000 2009 [favourites_count] => 0 [utc_offset] => SimpleXMLElement Object ( ) [time_zone] => SimpleXMLElement Object ( ) [profile_background_image_url] => http://s.twimg.com/a/1262113883/images/themes/theme1/bg.png [profile_background_tile] => false [notifications] => false [geo_enabled] => false [verified] => false [following] => false [statuses_count] => 2 ) [geo] => SimpleXMLElement Object ( ) ) [1] => SimpleXMLElement Object ( [created_at] => Wed Dec 30 11:01:43 +0000 2009 [id] => 7192966364 [text] => This is my 1st tweet [source] => web [truncated] => false [in_reply_to_status_id] => SimpleXMLElement Object ( ) [in_reply_to_user_id] => SimpleXMLElement Object ( ) [favorited] => false [in_reply_to_screen_name] => SimpleXMLElement Object ( ) [user] => SimpleXMLElement Object ( [id] => 100469557 [name] => naveed [screen_name] => naveedriksof [location] => SimpleXMLElement Object ( ) [description] => SimpleXMLElement Object ( ) [profile_image_url] => http://s.twimg.com/a/1262113883/images/default_profile_6_normal.png [url] => SimpleXMLElement Object ( ) [protected] => false [followers_count] => 0 [profile_background_color] => 9ae4e8 [profile_text_color] => 000000 [profile_link_color] => 0000ff [profile_sidebar_fill_color] => e0ff92 [profile_sidebar_border_color] => 87bc44 [friends_count] => 0 [created_at] => Wed Dec 30 10:59:31 +0000 2009 [favourites_count] => 0 [utc_offset] => SimpleXMLElement Object ( ) [time_zone] => SimpleXMLElement Object ( ) [profile_background_image_url] => http://s.twimg.com/a/1262113883/images/themes/theme1/bg.png [profile_background_tile] => false [notifications] => false [geo_enabled] => false [verified] => false [following] => false [statuses_count] => 1 ) [geo] => SimpleXMLElement Object ( ) ) ) ) ) 

У меня 2 вопроса:

Q1. Как преобразовать вышеуказанный объект в массив. В вышеописанном объекте я могу видеть два состояния, но как сохранить статус в переменной как это.

 $firstStatus = "This is my first tweet"; $firstStatusTime = "4:30PM 12-12-09"; $secondStatus = "This is my second tweet"; $secondStatusTime = "9:30PM 12-12-09"; 

Q2. Могу ли я получить все статусы без моего пароля (Как мы можем видеть статус пользователя в Интернете). Я не хочу использовать RSS.

Вы можете получать статусы от отдельного пользователя с помощью Zend_Service_Twitter_Search :

 $twitter_search = new Zend_Service_Twitter_Search('json'); $response = $twitter_search->search('from:Username'); print_r($response); 

В качестве ответа на ваш первый вопрос вы можете использовать следующий фрагмент кода, взятый непосредственно из Zend Framework Wiki :

 $twitter = new Zend_Service_Twitter($user, $pass); // Get public timeline $publicTimeline = $twitter->status->publicTimeline(); // Loop through results: foreach ($publicTimeline->status as $status) { $date = $status->created_at(); $text = $status->text(); $user = $status->user->screen_name(); echo "$date: @$user: $text<br />\n"; } 

Теперь переменные $date , $text и $user также могут быть массивами, и в этом случае вы могли бы написать:

 $statusidx = 0; // Loop through results: foreach ($publicTimeline->status as $status) { $date[$statusidx] = $status->created_at(); $text[$statusidx] = $status->text(); $user[$statusidx] = $status->user->screen_name(); $statusidx++; echo "$date: @$user: $text<br />\n"; } 

Я не могу помочь вам с вашим вторым вопросом, просто потому, что у меня нет учетной записи Twitter и нет опыта работы с API Twitter в целом. Но это не похоже на это, судя по классу API Zend Framework.

Я преобразовал строки в объекты / массивы SimpleXML, например

$ = Массив (массив) simplexml_load_string ($ stroq);

Я не знаю, будет ли это работать для вас в этом случае. Это было для получения массива из XML-строки, полученной из API. Говоря о том, можно ли просто получить канал Twitter как json и использовать json_decode? Это было бы намного проще, чем работать с XML.

В любом случае, похоже, что для ваших твитов

 $firstStatusTime=$response->status[1]->created_at $firstStatus=$response->status[1]->text 

Но это трудно сказать без самого объекта в руке или более четкой печати.

Для Q2, да, вы можете получать чьи-либо сообщения из твиттера без пароля (если они не защищены).