Acessando API do twitter via OAuth com PHP | Parte 1

Olá pessoal, beleza? Nesta série de artigos, pretendo mostrar como acessar a API do twitter via OAuth utilizando PHP, através de uma classe já pronta para simplificar o acesso.

Nesta primeira parte 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: https://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: https://rafaelcouto.com.br/artigos/twitteroauth/, portanto o endereço de callback será: https://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

<?php
// 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.

3. 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.

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title>Acessando API do twitter via OAuth com PHP</title>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  </head>
  <body>
      <h1>Acessando API do twitter via OAuth com PHP</h1>

      <a href="redirect.php">Entrar</a>
  </body>
</html>

4. 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.

<?php
// 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.

5. 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.

<?php
// 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.

5. Verificando (app/painel.php)

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

<?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']);

  • 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.

6. Finalizando sessão (clearsessions.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.

<?php
// Iniciando sessão
session_start();

// Limpando sessão
session_destroy();
 
// Redirecionando para página de acesso
header('Location: ./index.php');

7. Concluindo

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.

Download dos arquivos

Espero que vocês tenham entendido. Até breve.
Abraços.

Acessando API do twitter via OAuth com PHP | Parte 2