Olá pessoal, beleza? Neste artigo, pretendo mostrar como acessar a API do twitter via OAuth utilizando PHP, através de uma classe já pronta para simplificar o acesso. Veremos como registrar a aplicação na área de desenvolvedores do twitter e também como fazer a autenticação do usuário.

1. Registrar aplicação

Para registrar uma aplicação, é preciso entrar na área de desenvolvedores do twitter e clicar em Register an app. Agora basta preencher com as informações da aplicação, em resumo:

  • Application Name: O nome da aplicação;
  • Description: A descrição da aplicação;
  • Application Website: O endereço onde o usuário pode acessar ou ver informações da aplicação. Por exemplo: http://rafaelcouto.com.br/artigos/twitteroauth/;
  • Organization: O autor da aplicação, pode ser o nome da empresa ou seu nome;
  • Application Type: Como a aplicação vai ser na web, selecionamos a opção Browser;
  • Callback URL: Aqui vai o endereço que o usuário será redirecionado após autenticar-se na aplicação. Seguindo nosso artigo devemos apontar para o arquivo callback.php. Por exemplo, minha aplicação fica no seguinte endereço: http://rafaelcouto.com.br/artigos/twitteroauth/, portanto o endereço de callback será: http://rafaelcouto.com.br/artigos/twitteroauth/callback.php. É bom ressaltar que o endereço não pode ser localhost;
  • Default Access type: Selecionamos a opção Read & Write, pois nesse artigo iremos buscar informações (read) e também atualizar informações (write);
  • Application Icon: Selecionamos a imagem da aplicação, você pode selecioná-la mais tarde.

Após registrada a aplicação, na página dos detalhes da aplicação, guarde os seguintes valores: Consumer key e Consumer secret. Eles serão necessário para que o twitter reconheça a aplicação.

2. Classe

Depois de testar algumas classes, optei por escolher a do @abraham, pois, na minha opinião, ela é mais flexível e contém menos bugs, apesar de estar em fase beta enquanto escrevo este artigo. Para baixar a classe basta acessar este link e escolher a última versão. Além da classe, já vem alguns arquivos básicos para autenticação. Se você preferir, pode baixar os mesmo arquivos no final do artigo, pois eles foram levemente adaptados e os comentários traduzidos.

3. Configuração (config.php)

Primeiramente, vamos definir as informações de acesso de nossa aplicação

// Configurações da aplicação
define('CONSUMER_KEY', '');
define('CONSUMER_SECRET', '');
define('OAUTH_CALLBACK', '');

Linha 3 e 4: definimos a Consumer key e Consumer secret da aplicação, para descobrir suas chaves basta ir até os detalhes de sua aplicação na área de desenvolvedores do twitter.

Linha 5: definimos a página para onde o usuário será redirecionado após autenticar-se na aplicação. Este endereço deve ser o mesmo que está cadastrado em sua aplicação lá na área de desenvolvedores do twitter.

4. Página inicial (index.php)

Essa é a página principal de nossa aplicação, onde podemos colocar as informações e um botão para acessar a aplicação.




Acessando API do twitter via OAuth com PHP



Acessando API do twitter via OAuth com PHP


Entrar

5. Redirecionando para autenticação (redirect.php)

Essa página será responsável por redirecionar o usuário para a página de autenticação da aplicação.

// Iniciando sessão
session_start();

// Incluindo classe e configurações
require_once('twitteroauth/twitteroauth.php');
require_once('config.php');

// Instanciando objeto para acessar a API
$connection = new TwitterOAuth(CONSUMER_KEY, CONSUMER_SECRET);

// Requisitando tokens temporários para autenticação
$request_token = $connection->getRequestToken(OAUTH_CALLBACK);

// Salvando tokens temporários na sessão
$_SESSION['oauth_token'] = $token = $request_token['oauth_token'];
$_SESSION['oauth_token_secret'] = $request_token['oauth_token_secret'];

// Verifica a conexão com a API
switch ($connection->http_code) {
// Se estiver conseguindo conectar
case 200:
// Construindo URL de autorização
$url = $connection->getAuthorizeURL($token);
// Redirecionando para a página de autorização do twitter
header("Location: {$url}");
break;
default:
// Se não estiver conseguindo conectar
echo 'Não foi possível conectar-se ao twitter.';
}

Analisando o código:

  • Linha 10: criamos um objeto da classe passando ao construtor as informações de nossa aplicação que foram definidas na configuração.
  • Linha 13, 16 e 17: através do método getAuthorizeURL() pegamos os tokens temporários necessários para autenticação, depois armazenamos os tokens na sessão, pois utilizaremos eles no callback.
  • Linha 24 e 26: através do método getAuthorizeURL() pegamos a página de autorização passando o token como parâmetro e depois redirecionamos o usuário para esta página.

6. Retornando da autenticação (callback.php)

Essa página será a responsável por receber a resposta da página de autenticação do twitter.

// Iniciando sessão
session_start();

// Incluindo classe e configurações
require_once('twitteroauth/twitteroauth.php');
require_once('config.php');

// Instanciando objeto para acessar a API e já setando os tokens temporários
$connection = new TwitterOAuth(CONSUMER_KEY, CONSUMER_SECRET, $_SESSION['oauth_token'], $_SESSION['oauth_token_secret']);

// Requisitando os tokens que vão permitir o acesso do usuário, passando o verificador retornado pelo twitter
$access_token = $connection->getAccessToken($_REQUEST['oauth_verifier']);

// Salvando os tokens de acesso na sessão
$_SESSION['access_token'] = $access_token;

// Removendo tokens temporários da sessão
unset($_SESSION['oauth_token']);
unset($_SESSION['oauth_token_secret']);

// Verifica a conexão com a API
if (200 == $connection->http_code)
// Redirecionando usuário para página principal de nossa aplicação
header('Location: app/painel.php');
else
// Redirecionando para página responsável por limpar a sessão e redirecionar para página de acesso
header('Location: ./clearsessions.php');

Analisando o código:

  • Linha 10: criamos um objeto da classe e além de passar as informações de nossa aplicação, definimos os tokens temporários que estão na sessão.
  • Linha 13 e 16: através do método getAccessToken() pegamos os tokens que, finalmente, vão permitir que o usuário permaneça autenticado, perceba que passamos como parâmetro o verificador que é retornado pelo twitter. Depois salvamos o token de acesso na sessão para podermos validá-lo em outras páginas.
  • Linha 25: se tudo ocorreu bem até aqui, redirecionamos o usuário para a página principal de nossa aplicação.

7. Verificando (app/painel.php)

// Iniciando sessão
session_start();

// Incluindo classe e configurações
require_once('../twitteroauth/twitteroauth.php');
require_once('../config.php');

// Se os tokens de acesso não estiverem setados
if (!isset($_SESSION['access_token']))
// Redirecionando para página responsável por limpar a sessão e redirecionar para página de acesso
header('Location: ../clearsessions.php');

// Armazenando tokens de acesso
$access_token = $_SESSION['access_token'];

// Instanciando objeto para acessar a API
$connection = new TwitterOAuth(CONSUMER_KEY, CONSUMER_SECRET, $access_token['oauth_token'], $access_token['oauth_token_secret']);

Nas páginas de nossa aplicação, basta verificar se o usuário está autenticado:

  • Linha 10 e 12: Se os tokens de acesso não estiverem definidos, ou seja, o usuário não se autenticou, redirecionamos para página clearsessions.php que será explicada adiante.
  • Linha 15: armazenamos os tokens da sessão em um vetor para simplificar o acesso.
  • Linha 18: finalmente, criamos o nosso objeto final passando as informações da aplicação e os tokens de acesso. Com esse objeto podemos acessar as informações do twitter do usuário autenticado como seus tweets, followers, friends, mentions, etc. Podemos também, seguir alguém, enviar um tweet, enfim, todas as funcionalidades disponíveis na API do twitter.

8. Finalizando sessão (clearsessions.php)

// Iniciando sessão
session_start();

// Limpando sessão
session_destroy();

// Redirecionando para página de acesso
header('Location: ./index.php');

Por fim, este arquivo é responsável por finalizar a sessão do usuário autenticado, redirecionando ele para a página de autenticação de nossa aplicação.

9. Concluindo a primeira parte

Bom pessoal, o objetivo desta primeira parte foi concluído. Na próxima etapa vamos começar a "brincar" com as funcionalidades da API. Creio que está primeira parte de autenticação seja a que está confundindo mais o pessoal, pois antes não era necessário todos esses processos.

Parte 2:

Nesta segunda parte vamos mostrar como você faz para buscar informações no Twitter e mostrar na tela. Para buscar as informações no twitter, basta utilizar o método get() de nossa classe. O primeiro parâmetro é o recurso que será utilizado. Para saber os recursos da API do twitter é só acessar a documentação da API.

Confira a aplicação em funcionamento

10. Informações do usuário autenticado

Para descobrir as informações do usuário autenticado, podemos utilizar o recurso account/verify_credentials.

// @link http://dev.twitter.com/doc/get/account/verify_credentials
$usuario = $connection->get('account/verify_credentials');
?>

As informações retornadas pela API são alocadas no objeto $usuario, desse modo podemos exibir todas propriedades do objeto e seus respectivos valores através da função print_r().

echo '

', print_r($usuario, true), '

'
?>

No caso se eu estiver autenticado com meu twitter (@faael), o código acima irá retornar:

stdClass Object
(
[verified] =>
[id_str] => 30599789
[notifications] =>
[profile_text_color] => 333333
[url] => http://faael.net
[description] => Aficionado por tecnologia, principalmente em relação a web.
[default_profile] => 1
[profile_sidebar_fill_color] => DDEEF6
[default_profile_image] =>
[following] =>
[profile_background_tile] =>
[profile_image_url] => http://a0.twimg.com/profile_images/887089721/IMG0023A_normal.jpg
[location] => Brasil - Bauru, SP
[contributors_enabled] =>
[time_zone] => Brasilia
[profile_link_color] => 0084B4
[screen_name] => faael
[follow_request_sent] =>
[profile_sidebar_border_color] => C0DEED
[followers_count] => 121
[show_all_inline_media] =>
[geo_enabled] =>
[favourites_count] => 48
[created_at] => Sun Apr 12 04:20:49 +0000 2009
[protected] =>
[profile_use_background_image] => 1
[name] => Rafael Couto
[is_translator] =>
[lang] => en
[friends_count] => 219
[profile_background_color] => C0DEED
[id] => 30599789
[listed_count] => 22
[statuses_count] => 115
[profile_background_image_url] => http://a3.twimg.com/a/1302724321/images/themes/theme1/bg.png
[utc_offset] => -10800
)

O resultado acima é apenas pra nós sabermos os nomes das propriedades, pois assim podemos exibir apenas as que interessam para nossa aplicação.











11. Como pegar as atualizações dos amigos

Acessando API do twitter via OAuth com PHP

Para recuperar as atualizações dos amigos do usuário autenticado, podemos utilizar o recurso statuses/home_timeline ou statuses/friends_timeline, a diferença é que o último não mostra os retweets.

// @link http://dev.twitter.com/doc/get/statuses/home_timeline
$timeline = $connection->get('statuses/home_timeline', array('count' => 5));
?>

O método get() aceita como segundo parâmetro um vetor com os parâmetros do recurso. Por exemplo, podemos limitar a quantidade de registros que serão retornados passando o parâmetro count. Para saber os parâmetros de um recurso, basta ver na documentação da API.


















Alguns detalhes:

  • Linha 1: Como um usuário pode ter mais de uma atualização de amigos, percorremos a $timeline utilizando o laço foreach(). Portanto, tudo que está dentro do foreach será exibido para cada atualização;
  • Linha 5: acessamos a propriedade profile_image_url do objeto user (usuário que enviou o tweet), que nos retorna o caminho da imagem de exibição do usuário, este endereço é colocado no atributo src da tag img;
  • Linha 8: exibimos o apelido do usuário, linkando para seu profile no twitter;
  • Linha 21: transformamos a data retornada em string para time através da função strtotime() e depois formatamos ela com a função date().

12. Amigos / Seguidores

Acessando API do twitter via OAuth com PHP

Para recuperar os amigos e os seguidores do usuário autenticado utilizamos, respectivamente, os recursos statuses/friends e statuses/followers.

Acessando API do twitter via OAuth com PHP

É o mesmo esquema, utilizamos o método get() que nos retorna as informações de um recurso e então exibimos essas informações, como esses recursos retornam mais de um registro, precisamos utilizar o laço foreach().

Pegando os que você segue:

// @link http://dev.twitter.com/doc/get/statuses/friends
$friends = $connection->get('statuses/friends', array('count' => 20)); ?>

Exibindo 20 amigos de .





Pegando quem lhe segue:

// @link http://dev.twitter.com/doc/get/statuses/followers
$followers = $connection->get('statuses/followers', array('count' => 20)); ?>

Exibindo 20 seguidores de .





13. Trends

Acessando API do twitter via OAuth com PHP

Podemos recuperar também os trends topics, basta utilizarmos o recurso trends/:woeid. O :woeid é um parâmetro numérico que indica a localização dos trends (leias mais aqui), se informado 1, o retorno será os trends mundiais. O woeid do Brasil é o 23424768.

// @link http://dev.twitter.com/doc/get/trends/:woeid
$trends = $connection->get('trends/23424768'); ?>

      14. Atualizações de um usuário especifico

      Para exibir as atualizações de um usuário especifico utilizamos o recurso statuses/user_timeline. Passamos como parâmetro o id ou screen_name do usuário.

      // @link http://dev.twitter.com/doc/get/statuses/user_timeline
      $timeline = $connection->get('statuses/user_timeline', array('screen_name' => 'faael'));
      ?>

      15. Concluindo

      Bom pessoal, infelizmente não é possível eu detalhar todos os recursos, até porque a documentação da API já faz isso, mas tentei pelo menos passar o conceito para acessar um recurso, com isso podemos acessar qualquer recurso disponível na API, basta apenas descobrir o nome do recurso e seus parâmetros na documentação da API.

      Qualquer dúvida sobre um recurso que foi ou não abordado aqui, deixe um comentário. Estou aprendendo agora também utilizar a API do twitter, então qualquer sugestão, correção ou melhoria é bem vinda, ok?

      Download dos arquivos

      Acessando API do twitter via OAuth com PHP