2009-12-30 9 views
1

Je veux montrer mes 5 ou 10 derniers statuts de twitter sur mon site. Pour l'instant j'utilise le code suivant pour obtenir mes statuts Twitter.Zend Framework: Comment obtenir mes statuts de twitter

public function getOrganizationsTwitterUpdates(){ 

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

Et je dois suivre la réponse du code ci-dessus.

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

J'ai 2 question:

Q1. Comment convertir un objet ci-dessus en tableau. Dans l'objet ci-dessus, je peux voir mes deux statuts, mais comment puis-je stocker mon statut dans une variable comme celle-ci.

$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. Puis-je obtenir tous mes statuts sans mon mot de passe (comme on peut voir le statut de n'importe qui sur le web). Je ne veux pas utiliser RSS.

Répondre

8

Vous pouvez obtenir les statuts d'un utilisateur individuel avec Zend_Service_Twitter_Search:

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

Cela fonctionne pour moi.Cette méthode de recherche renvoie le résultat sous forme de tableau et je n'ai pas besoin de le convertir en tableau. Je peux le rechercher par nom d'utilisateur, je n'ai pas besoin de mot de passe pour cela. Merci. – NAVEED

+0

Au cas où quelqu'un trouverait cette réponse, il est intéressant de noter que Zend_Service_Twitter_Search utilise l'API de recherche et ne reviendra donc qu'environ une semaine de tweets. Si l'utilisateur n'a pas tweeté la semaine dernière, vous devrez utiliser la méthode de chronologie de l'utilisateur avec zend_service_twitter – raymosley

1

J'ai converti les chaînes en objets SimpleXML/tableaux comme

$ array = (tableau) simplexml_load_string (stroq $);

Je ne sais pas si cela fonctionnera pour vous dans ce cas. C'était pour obtenir un tableau à partir d'une chaîne XML obtenue à partir d'une API. En parlant de cela, est-il possible d'obtenir le flux Twitter en json et d'utiliser json_decode? Ce serait beaucoup plus facile que de travailler avec XML.

Quoi qu'il en soit, il semble que le chemin de vos tweets est

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

Mais il est difficile de dire sans que l'objet lui-même à la main ou une impression plus claire.

Pour Q2, oui, vous pouvez recevoir les messages de n'importe qui de twitter sans mot de passe (s'ils ne sont pas protégés).

2

En réponse à votre première question, vous pouvez utiliser suit l'extrait de code pris directement à partir du 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"; 
} 

Maintenant les variables $date, $text et $user pourraient aussi être des tableaux, dans ce cas, vous pouvez écrire:

$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"; 
} 

Je suis incapable de vous aider à votre deuxième question, tout simplement parce que je ne suis pas un compte Twitter et avoir aucune expérience de travail avec l'API de Twitter en général. Mais cela ne semble pas être le cas, à en juger par la classe de l'API Zend Framework.

+0

obtenir erreur suivant: Erreur fatale: Appel à la méthode non définie SimpleXMLElement :: created_at() – NAVEED

+0

Essayez d'insérer ceci avant la boucle foreach: ' $ twitter_status = new SimpleXMLElement ($ publicTimeline); 'et change le' $ publicTimeline-> status' dans la boucle foreach en: $ twitter_status' donc il dit: '$ twitter_status as $ status' ... c'est juste une supposition . –

+0

vous pouvez modifier votre réponse en fonction de vos commentaires ci-dessus. de toute façon merci. laisse moi essayer ça. – NAVEED

Questions connexes