Facebook API, Gerando tokens de acesso

Introdução

Neste artigo aprenderemos como gerar tokens de acesso de aplicativos para Facebook. Os tokens de acesso são a maneira no qual a API do Facebook valida a identidade de quem esta realizando o acesso. Qualquer chamada feita na API do facebook precisa de um token. Veremos como gerar tokens de acesso de usuário, aplicativo e página.

Segue uma breve descrição sobre os tipos de tokens:

  • Aplicativos: Tokens de acesso de aplicativos permitem ler e modificar configurações dos aplicativos, além de criar e gerenciar usuários de teste. Podemos usar tokens de acesso de aplicativos também para consultar publicações na linha do tempo de grupos e eventos que tem privacidade pública.
  • Usuários: Tokens de acesso de usuários são usados para ler, escrever e modificar dados de usuários. Tokens de acesso de páginas podem ser estendidos.
  • Páginas: Tokens de acesso de páginas são semelhantes aos tokens de acesso de usuário e são usados para ler, escrever e modificar dados de páginas. Tokens de acesso de páginas também pode ser estendidos.

Preparando o ambiente

É necessário ter uma aplicativo criado na plataforma do Facebook. Você precisará do App ID e App Secret. Caso tenha alguma dúvida de como criar um aplicativo na plataforma do Facebook, consulte o artigo Criando Aplicativos Facebook SDK v5 em PHP.

Para usar os códigos de geração de tokens de usuário e página é necessário a instalação do SDK de Facebook para PHP. Vamos fazer isso através do composer. Baixe a última versão do composer através do link https://getcomposer.org/composer.phar.

Dentro do diretório da sua aplicação facebook crie o arquivo composer.json com o seguinte conteúdo:

{
    "require": {
        "facebook/graph-sdk": "^5.5"
    }
}

Na linha de comando, execute:

$ php composer.phar install

Token de Acesso de Aplicativo

Gerar o token de acesso de aplicativo é bem simples. Tenha em mãos o App ID e o App Secret do aplicativo. O App ID e o App Secret podem ser obtidos na tela do Painel do aplicativo (https://developers.facebook.com/apps). Basta montar a URL conforme abaixo, substituindo os campos App ID e App Secret com os do seu aplicativo. Acesse a URL em um navegador e estará com o token de acesso de aplicativo em mãos.

https://graph.facebook.com/oauth/access_token?
     client_id={app-id}
    &client_secret={app-secret}
    &grant_type=client_credentials

O token de acesso de aplicativo não tem tempo de expiração, é ilimitado. Porém, caso o administrador do aplicativo redefina a chave secreta (App Secret) o token será automaticamente invalidado.

Token de Acesso de Usuário

O token de acesso de usuário é gerado durante o fluxo de Login do Facebook. Caso você já tenha feito um aplicativo usando o fluxo de Login você já gerou um token de usuário.

Para gerar o token de usuário, vamos usar dois arquivos: login.php e fb-callback.php. O login.php irá solicitar o Login do Facebook e as permissões desejadas para o usuário. Ao finalizar o processo de Login, o usuário será redirecionado de volta para a página fb-callback.php. O fb-callback.php se encarregará de estender e exibir o token do usuário.

Por padrão o token de acesso de usuário é de curta duração (cerca de duas horas). Quando estendido o token de acesso de usuário tem um prazo de 60 dias. Sempre que o usuário voltar a sua aplicação pelo fluxo de Login, atualize o seu token para que você sempre tenha um token com expiração no maior tempo possível.

login.php:

<?php
session_start();
date_default_timezone_set('America/Sao_Paulo');

// autoloader gerado pelo composer
require_once __DIR__ . "/vendor/autoload.php";

// instancia do facebook
$fb = new Facebook\Facebook([
    'app_id'     => '',
    'app_secret' => '',
    'default_graph_version' => ''
]);

$helper = $fb->getRedirectLoginHelper();
// permissoes
$perms = ['email','publish_actions','manage_pages', 'publish_pages'];  
        
// siteurl
$siteUrl = "";
    
$loginUrl = $helper->getLoginUrl("$siteUrl/fb-callback.php",$perms);
?>
<a href="<?= $loginUrl; ?>">Logar com Facebook!</a>

Lembre-se de parametrizar:

  • App ID, App Secret e App Version nas linhas 10, 11 e 12
  • As permissões desejadas na linha 17 (no exemplo estou solicitando email, publish_actions, manage_pages e publish_pages)
  • $siteUrl na linha 20 (o domínio de onde seu aplicativo esta acessível via web)

fb-callback.php:

<?php
session_start();
date_default_timezone_set('America/Sao_Paulo');

// autoloader gerado pelo composer
require_once __DIR__ . "/vendor/autoload.php";

// instancia do facebook
$fb = new Facebook\Facebook([
    'app_id'     => '',
    'app_secret' => '',
    'default_graph_version' => ''
]);

$helper = $fb->getRedirectLoginHelper();

try {
    $accessToken = $helper->getAccessToken();

    if (!$accessToken->isLongLived()) {
        // token de acesso de curta duração, solicitar um de longa duração
        $oAuth2Client = $fb->getOAuth2Client();
        $accessToken = $oAuth2Client->getLongLivedAccessToken($accessToken);
    }

} catch(Facebook\Exceptions\FacebookResponseException $e) {
    // Erro retornado pela graph api
    echo 'Graph returned an error: ' . $e->getMessage();
    exit;
} catch(Facebook\Exceptions\FacebookSDKException $e) {
    // falha na validacao ou outro tipo de erro
    echo 'Facebook SDK returned an error: ' . $e->getMessage();
    exit;
}

// exibe o token de acesso extendido
echo $accessToken;

Lembre-se de parametrizar:

  • App ID, App Secret e App Version nas linhas 10, 11 e 12

As linhas destacadas, 20 – 24, corresponde ao código responsável por estender o token de acesso de usuário.

Para gerar token estendido de usuário basta acessar a aplicação através do caminho http://siteurl/login.php

Token de Acesso de Página

Veremos agora como gerar o token de acesso de página. No caso, somente é possível gerar token de acesso de uma página através de um usuário que seja administrador dela. É necessário também que o usuário tenha concedido a permissão manage_pages. A permissão manage_pages permite que o aplicativo obtenha os tokens de acesso das páginas que o usuário administra.

Por padrão, o token de acesso de página também é de curta duração. Porém, caso o token de acesso de usuário usado para requisitar o token de acesso de página, seja de longa duração, o token de acesso de página também será de longa duração, que no caso, não tem tempo de expiração, ele é por tempo ilimitado.

Para gerar o token de página é necessário fazer uma requisição em /me/accounts usando um token de acesso de usuário. Veja abaixo o código responsável para gerar o token de acesso da página.

pagina-contas.php:

<?php
session_start();
date_default_timezone_set('America/Sao_Paulo');

// autoloader gerado pelo composer
require_once __DIR__ . "/vendor/autoload.php";

// instancia do facebook
$fb = new Facebook\Facebook([
    'app_id'     => '',
    'app_secret' => '',
    'default_graph_version' => ''
]);

// token de acesso do usuario de longa duracao
$accessToken = '';

try {
    $response = $fb->get("/me/accounts", $accessToken);
    $accounts = $response->getGraphEdge();

    echo "<pre>\n";
    echo "--------------\n";
    foreach($accounts as $account) {
        echo "ID => " . $account['id'] . "\n";
        echo "Name => " . $account['name'] . "\n";
        echo "Access Token => " . $account['access_token'] . "\n";
        echo "--------------\n";
    }
    echo "</pre>\n";

} catch(Facebook\Exceptions\FacebookResponseException $e) {
    echo 'Graph returned an error: ' . $e->getMessage();
    exit;
} catch(Facebook\Exceptions\FacebookSDKException $e) {
    echo 'Facebook SDK returned an error: ' . $e->getMessage();
    exit;
}

Lembre-se de parametrizar:

  • App ID, App Secret e App Version nas linhas 10, 11 e 12
  • Token de acesso de usuário estendido na linha 16 que tenha sido gerado por um aplicativo que tenha no mínimo solicitado a permissão manage_pages.

Ao executar o script pagina-contas.php será exibido na tela todas as páginas que o usuário administra incluíndo seu token de acesso correspondente.

Depurando tokens de acesso

O facebook tem uma ferramenta bem interessante que detalha as informações de um token de acesso. Ela pode ser acessada através do link https://developers.facebook.com/tools/debug/accesstoken/.

Basta informar o token de acesso e clicar no botão “Depurar”.

Conclusão

Neste breve atigo, de forma simples, foi possível demonstrar como gerar access tokens na plataforma do Facebook. Espero que tenha um bom proveito das informações e boa sorte!

Referências

https://developers.facebook.com/docs/facebook-login/access-tokens

Please follow and like us:

Comments

  1. By José Fagundes

    • mm By Douglas V. Pasqua

      • By José Fagundes

        • mm By Douglas V. Pasqua

  2. By José Fagundes

  3. By fernando

    • mm By Douglas V. Pasqua

  4. By HAROLDO MAIOLINO

    • mm By Douglas V. Pasqua

    • mm By Douglas V. Pasqua

    • mm By Douglas V. Pasqua

  5. By rnansb

    • mm By Douglas V. Pasqua

    • mm By Douglas V. Pasqua

    • mm By Douglas V. Pasqua

Follow

Get every new post on this blog delivered to your Inbox.

Join other followers: