ago201026
John Marques
1
Classe TwitterStatuses – Atualizando e Retornando Tweets
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
1 Comentário to “Classe TwitterStatuses – Atualizando e Retornando Tweets”
Responda






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 =\