PHP: Integrando o Twitter ao seu Site – Parte 3 (Agora com OAuth)

Yes! I’m alive!

Depois de desaparecer por praticamente 4 meses (se você não me segue no twitter, é claro), cá estou eu novamente, tomando as rédeas para terminar de uma vez esse jornada em 3 partes.

Esta etapa deveria ter como finalidade, conforme o primeiro artigo, o desenvolvimento de uma biblioteca que agregasse as funções que foram desenvolvidas nos primeiros dois artigos, mas as coisas mudaram um pouco de figura. Visto que o Twitter recentemente parou de dar suporte a Basic Auth à sua API, muitas pessoas me pediram para que este terceiro (e último) artigo mudasse para como se autenticar na API usando OAuth. Como sou fácil de se convencer, resolvi mudar o artigo final para atender essa nova demanda.

O que nós vamos ver daqui em diante é o passo a passo de como gerar os tokens necessários para se autenticar no Twitter, usá-los junto com OAuth para se autenticar e enviar/receber os tweets através da API.

Para aqueles que estão praguejando agora e esperavam pela biblioteca que integraria todos os recursos, sugiro dar uma olhada nesses projetos, que, basicamente, fazem o que iríamos fazer aqui (pra que retrabalho, right?):

Parte 3: Usando OAuth para acessar a API do Twitter

Antes de mais nada, vamos explicar o que diabos é OAuth. Mas não vá imaginando grandes coisas. O foco principal não é detalhar e esmiuçar o OAuth, e sim usa-lo para acessar a API do Twitter).

OAuth

Basicamente, OAuth (Open Authorization) é um padrão aberto que permite que os usuários compartilhem seus dados entre sites, sem a necessidade usar seu usuário e senha. Ele se baseia no uso de tokens, que transitam entre os sites, permitindo acesso a recursos especificos por um determinado tempo.

Gerando os tokens (a.k.a. pedindo pro Twitter liberar o acesso)

Primeiramente, vamos gerar os tokens necessários para acessar a API (ou você achou que aquela abominação de colocar o usuário e senha do artigo anterior ia ser definitiva?). Para isso, acesse o Twitter Developers e clique em “Register an app”.

Será solicitado seu usuário e senha e aparecerá a tela para Registrar uma nova aplicação. Neste formulário, para o nosso uso, é importante que seja selecionado em Application Type a opção “Browser” (dãh) e em Default Access Type, a opção “Read & Write” (no nosso exemplo, vamos enviar e receber tweets). Preencha o resto dos campos com os dados da sua aplicação, mas não precisa se preocupar se a Callback URL é valida (lembrando, para o nosso exemplo em especifico).

Feito o cadastro, a página seguinte tem 2 informações necessárias para nosso exemplo: “Consumer key” e “Consumer secret”.

No menu a direita, no link “My Access Token”, tem as duas últimas informações necessárias para continuarmos: “Access Token (oauth_token)” e “Access Token Secret (oauth_token_secret)”.

Aqui cabe uma explicação.

Nossa aplicação é simples e visa o simples acesso aos nossos próprios tweets ou tweets de nossa aplicação. Justamente por essa simplicidade que não vamos ver como obter o Access Token e o Access Token Secret remotamente (não neste artigo, quem sabe mais adiante). Aplicações tipo TwitPic e o TwitCam fazem uso desses tokens e os recuperam remotamente (Lembra? Allow/Deny?) evitando de digitar usuários e senha em aplicações de terceiros.

Bom, depois da explicação, vamos continuar a brincadeira. Já estamos em posse de tudo que precisamos para colocar as mãos em código (estavam ansiosos não?), então pra que ficar esperando, let’s go!

Mãos a obra

A partir de agora é jogo rápido, codificar é sempre mais fácil do que falar (digitar no caso, eu acho).

Eu não vejo porque de reinventar a roda, já existem várias bibliotecas que fazem o trabalho pesado, eu vou usar para o nosso exemplo, uma feita por Abraham Williams, chamada OAuth Twitter PHP, que faz muito bem o que se propõem, é de fácil uso, e foi uma das primeiras que eu achei (just kidding :D).

Faça o download da versão mais recente da biblioteca (na data de criação deste artigo, era a 0.2.0-beta3) e descompacte o diretório “twitteroauth” dentro da sua aplicação.

Feito isso, vamos criar o script que vai fazer a conexão com a API:

require_once('twitteroauth/twitteroauth.php');

$consumer_key = 'sua-consumer-key';
$consumer_secret = 'seu-consumer-secret';
$oauth_token = 'seu-oauth-token';
$oauth_token_secret = 'seu-oauth-token-secret';

$connection = new TwitterOAuth(
    $consumer_key,
    $consumer_secret,
    $oauth_token,
    $oauth_token_secret
);

$result = $connection->get(
    'account/verify_credentials',
    array()
);

if(property_exists($result, 'error')){
    echo 'Ooops. Deu erro';
} else {
    echo 'Tudo tranquilo';
}

Explicando:

  • Linha 1: Require para a biblioteca do Twitter OAuth;
  • Linha 3 a 6: Simples atribuição dos tokens a variáveis (parece ficar mais fácil de visualizar);
  • Linha 8 a 13: Criando a instância da classe TwitterOAuth usando os parâmetros levantados anteriormente;
  • Linha 15 a 18: Uso o método get da classe TwitterOAuth para recuperar os dados da conta do Twitter;
  • Linha 20 a 24: Simples verificação a verificação foi feita com sucesso.

O método get tem como parâmetros o recurso e os parâmetros a ser passados para a API. Para este exemplo, usei o recurso “account/verify_credentials”, que basicamente trás informações sobre o usuário. A lista completa de recursos pode ser vista aqui.

Recuperando os tweets

Partindo do pressuposto que já está tudo certo e você está autorizado na API, vamos brincar mais um pouco.
No primeiro artigo da série, mostrei como recuperar de maneiras mais simples (RSS, basicamente) os tweets do usuário. Agora que já estamos mais profissionais no assunto, vamos usar a API para recuperar esses dados. É bem simples:

require_once('twitteroauth/twitteroauth.php');

$consumer_key = 'sua-consumer-key';
$consumer_secret = 'seu-consumer-secret';
$oauth_token = 'seu-oauth-token';
$oauth_token_secret = 'seu-oauth-token-secret';

$connection = new TwitterOAuth(
    $consumer_key,
    $consumer_secret,
    $oauth_token,
    $oauth_token_secret
);

$result = $connection->get(
    'statuses/user_timeline',
    array()
);

echo '<ol>';
foreach($result as $node){
    printf('<li><a href="%s">%s</a></li>',
        'http://twitter.com/' . $node->user->screen_name. '/status/' . $node->id,
        $node->text
    );
}
echo '</ol>';

A Explicação também é simples: Eu adaptei o exemplo do primeiro post para ao invés de percorrer um XML ele percorrer o resultado da consulta à API. Com isso ele vai montar a mesma lista com os Tweets.

Enviando um tweet

No segundo artigo, utilizamos cURL para acessar a API e enviar tweets, passando o usuário e senha. Isso não é legal, e é evil. Agora podemos usar o método “post” para enviar os tweets, basicamente temos que mudar o recurso e passar a mensagem como parametro:

require_once('twitteroauth/twitteroauth.php');

$consumer_key = 'sua-consumer-key';
$consumer_secret = 'seu-consumer-secret';
$oauth_token = 'seu-oauth-token';
$oauth_token_secret = 'seu-oauth-token-secret';

$connection = new TwitterOAuth(
    $consumer_key,
    $consumer_secret,
    $oauth_token,
    $oauth_token_secret
);

$result = $connection->post(
    'statuses/update',
    array(
        'status' => 'Text of status here',
    )
);

Rápido, fácil e indolor. Assim que as coisas devem ser!

Com isso você já tem uma boa base para criar aplicações no seu site, interagindo com a API do Twitter. Como complemento recomendo fortemente ler a documentação da Twitter Developers, que tem muita coisa boa pra ser aproveitada.

Pessoal, fico por aqui, até a próxima e boa diversão!

Links:

Créditos da imagem do “mano” twitter – Luciano Fontoura



Leia também:

  1. PHP: Integrando o Facebook ao seu site – parte 1 – Acessando o perfil público
  2. PHP: Integrando o Twitter ao seu Site – Autenticação de Usuários
  3. PHP: Integrando o Twitter ao seu Site – Extra (Mais comandos da API)
  4. PHP: Integrando o Twitter ao seu Site – Parte 2
  5. PHP: Integrando o Twitter ao seu site – Parte 1

Categoria: Sem categoria
Tags: , ,

153 respostas a PHP: Integrando o Twitter ao seu Site – Parte 3 (Agora com OAuth)

Deixe uma resposta

O seu endereço de email não será publicado Campos obrigatórios são marcados *

*

Você pode usar estas tags e atributos de HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>