ago201026

1

Classe TwitterStatuses – Atualizando e Retornando Tweets

Lomadee, uma nova espécie na web. A maior plataforma de afiliados da América Latina.

Olá Pessoal,

Quanto tempo heim?

Pois então hoje estava mexendo com um classe para fazer interação com o Twitter sem o usar autenticação via oAuth, então fiz em cURL, e gostaria de compartilhar com vocês. =D

Achei dois artigos na internet que me ajudarão a fazer, no fim passo a referência.

Então vamos lá!

Arquivo:  TwitterStatuses.php

<?php
/**
 * Classe de manipulação do status do usuário no Twitter
 *
 * @author John Marques
 *            john@webcomcafe.com.br
 */
class TwitterStatuses
{
 /**
 * Usuário do Twitter
 * @var string
 */
 private $username;

 /**
 * Senha do usuário do Twitter
 * @var mixed
 */
 private $password;

 /**
 * Usuário e Senha já formato para o CURL
 * @var mixed
 */
 private $userpwd;

 /**
 * Vetor com as url que servirão para interagir com o Twitter
 * @var array
 */
 private $url = array(
 'update'         => "http://TwitterStatuses.com/statuses/update.xml",
 'user_timeline' => "http://TwitterStatuses.com/statuses/user_timeline.xml"
 );

 /**
 * Seta os valores dos membros da classe
 * @param string $username
 * @param string $password
 */
 public function __construct($username, $password = '')
 {
 self::setUsername($username);

 if($username != '' && $password != '')
 {
 self::setPassword($password);
 }
 }

 /**
 * Seta o valor do membro $username
 * @param string $value
 */
 public function setUsername($value)
 {
 $this->username = $value;
 }

 /**
 * Seta o valor do membro $password
 * @param string $value
 */
 public function setPassword($value)
 {
 $this->password = $value;
 $this->userpwd  = $username . ':' . $value;
 }

 /**
 * Atualiza o status do perfil do usuário no TwitterStatuses
 * @param string $message
 */
 public function update($message)
 {
 if($this->userpwd == '') {
 trigger_error("O membro \$userpwd não pode ser nulo.", E_USER_ERROR);
 return false;
 }

 $curl_handle = curl_init();
 curl_setopt($curl_handle, CURLOPT_URL, $this->url['update']);
 curl_setopt($curl_handle, CURLOPT_CONNECTTIMEOUT, 2);
 curl_setopt($curl_handle, CURLOPT_RETURNTRANSFER, 1);
 curl_setopt($curl_handle, CURLOPT_POST, 1);
 curl_setopt($curl_handle, CURLOPT_POSTFIELDS, "status=$message");
 curl_setopt($curl_handle, CURLOPT_USERPWD, $this->userpwd);
 $buffer = curl_exec($curl_handle);
 curl_close($curl_handle);

 $ResponseXML = simplexml_load_string($buffer);

 if(isset($ResponseXML->error) && $ResponseXML->error != '') {
 return false;
 } else {
 return true;
 }
 }

 /**
 * Retorna os últimos tweets do usuário no TwitterStatuses, não é necessário logar
 */
 public function user_timeline()
 {
 $curl_handle = curl_init();
 curl_setopt($curl_handle, CURLOPT_URL, $this->url['user_timeline'] . '?screen_name=' . $this->username);
 curl_setopt($curl_handle, CURLOPT_HEADER, 1);
 curl_setopt($curl_handle, CURLOPT_TIMEOUT, 30);
 curl_setopt($curl_handle, CURLOPT_RETURNTRANSFER, 1);
 $buffer = curl_exec($curl_handle);
 curl_close($curl_handle);
 // Encontra a primeira ocorrência de <?, para que se retorne somente o xml
 $data = strstr($buffer, '<?');
 // Interpreta o xml e transforma em objeto
 $ResponseXML = simplexml_load_string($data);

 if(isset($ResponseXML->error) && $ResponseXML->error != '') {
 return false;
 } else {
 // Retorna os status como vetor
 return $ResponseXML->status;
 }
 }
}
?>

A classe possui  cinco métodos,  são eles:

  • __construct( $username, $password = ” );
    Seta o usuário e senha do usuário que irá ser “manipulado”,  é obrigatório o parâmentro $username,  caso não seja informado o parâmentro $password, não se consiguirá “Twittar”.
    Fiz dessa forma por que pode haver o caso de você programador não necessitar fazer tweet, somente buscar os últimos tweets do usuário
  • update( $message );
    Faz a atualização do status do usuário no perfil do orkut, ou popularmente faz um Tweet.
    É verifica se o usuário informou o usuário e seha, caso não seja informado, gera um Fatar error como esse:
    “Fatal error: O membro $userpwd não pode ser nulo. in C:\wamp\www\espaco_cidadania\twitter\TwitterStatuses.php on line 78″
  • user_timeline();
    Retorna os últimos tweets postados pelo o usuário.
  • setUsername(); e setPassword();
    São métodos para setar os valores dos membros $username, $password e $userpwd

Agora que já está explicado os métodos da classe, vamos aos exemplos.

Retornando os Tweets

<?php
// Requer o arquivo da classe
require_once('TwitterStatuses.php');

// Inicia o objeto e passa o usuário
$twitter = new TwitterStatuses('nome_do_usuario_no_twitter');
// Retorna a Timeline
$status  = $twitter->user_timeline();

// Verifica se o retorno está OK
if($status) {
 // Número de Tweets
 $num_status = count($status);

 // Faz o loop
 for($i=0; $i<$num_status; $i++) {
 // Tweet Corrente
 $current = $status[$i];

 // Exibe alguams informações
 echo 'id:' . $current->id . '<br />Date:'.date('d/m/Y H:i:s', strtotime($current->created_at)).'<br />Messagem: ' . utf8_decode($current->text);

 // Exibe os dados retornado no Tweet corrente
 echo '<br /><br />Resposta do Twitter<br />------------------------------------------<br />';
 print_r($current);
 echo '<br /><br /><br />';
 }
}
?>

Atualizando o status do Twitter

<?php
// Requer o arquivo da classe
require_once('TwitterStatuses.php');

// Inicia o objeto e passa o usuário
$twitter = new TwitterStatuses('nome_do_usuario_no_twitter', 'senha_do_usuario');

// twita
if($twitter->update('Twitando pela classe TwiterStatuses')){
 echo 'Tweet realizado com sucesso';
} else {
 echo 'Não foi possível twittar';
}

Então pessoal é isso ai,  até a próxima

Referência:
http://www.marksanborn.net/howto/getting-your-twitter-updates-with-curl
http://morethanseven.net/2007/01/20/posting-to-twitter-using-php.html


Lomadee, uma nova espécie na web. A maior plataforma de afiliados da América Latina.

1 Comentário to “Classe TwitterStatuses – Atualizando e Retornando Tweets”

  1. junior 30 novembro 2011 at 18:09 #

    Olá , gostei da sua disposição em passar o algoritmo , mas preciso de sua ajuda. Estou com o seguinte erro:

    Fatal error: Call to undefined function curl_init() in C:\xampp\htdocs\PHP\twitter\ficheiros\TwitterStatuses.php on line 82

    Poderia me ajudar? Como posso resolver, já até habilitei o curl_init() no php.ini , mas não consigo resolver =\


Responda