Como gerar o token de acesso de longa duração do Facebook
Você já se deparou com tarefas de API? Então, provavelmente você já ouviu falar sobre o ‘Token de Acesso’. O token de acesso é um tipo de token de identidade que os sites sociais (como o Facebook) usam para realizar operações em nome de um usuário.
Em outras palavras, um aplicativo com token de acesso válido pode buscar sua lista de amigos, postar em seu mural, obter seus detalhes básicos como e-mail, data de nascimento, etc. Claro, você precisa permitir a permissão para todos esses acessos. Sem a sua permissão, o token de acesso não pode acessar as informações dos usuários.
Ao falar sobre a API do Facebook, sua API fornece 2 tipos de tokens: tokens de acesso de curta e longa duração.
O token de curta duração possui um curto período de tempo. Isso significa que você não pode dar chamadas de API depois que o token expira. Você receberá uma resposta não autorizada assim que o token expirar. Cada chamada de API requer token de acesso válido como um parâmetro, então apenas eles enviam uma resposta de volta.
Uma vez que o token expirou, você precisa pedir ao usuário para passar pelo processo de login novamente usando o seu aplicativo.
Isso não faz sentido. É uma espécie de processo repetido do qual o usuário não gosta na verdade.
É aqui que devemos usar o conceito de token de acesso de longa vida do Facebook. Um token de longa duração geralmente dura cerca de 60 dias. E é muito melhor do que usar tokens de curta duração.
Dito isso, vamos ver como gerar um token de acesso Long-Lived do Facebook.
Registrar um aplicativo
Para começar, primeiro você precisa registrar um aplicativo no Facebook Developers. Você receberá um guia passo a passo sobre como registrar e configurar um aplicativo aqui.
Depois de registrar o aplicativo, copie o ID e o segredo do aplicativo que solicitamos em um momento.
Gerar um token de acesso duradouro
Agora, temos o ID do aplicativo e as chaves secretas do aplicativo. Crie um arquivo chamado config.php
e adicione nossas chaves usando o método PHP define().
config.php
<?php
define('CLIENT_ID', 'YOUR_CLIENT_ID');
define('CLIENT_SECRET', 'YOUR_CLIENT_SECRET');
define('REDIRECT_URL', 'YOUR_SITE_URL/redirect.php');
?>
No código acima, especificamos REDIRECT_URL para YOUR_SITE_URL / redirect.php. Então, crie o arquivo redirect.php
. Este é o arquivo onde escreveremos o código para gerar um token de longa vida.
Mas antes disso, precisamos criar uma URL de login que redirecione um usuário para a página de login do Facebook para autorizar seu aplicativo. Crie um arquivo login.php
e adicione o código abaixo nele.
login.php
<?php
require_once "config.php";
echo "<a href='https://www.facebook.com/v2.10/dialog/oauth?client_id=". CLIENT_ID. "&redirect_uri=". REDIRECT_URL. "'>Login To Facebook</a>";
?>
Quando um usuário clica no link para fazer login no Facebook, ele redireciona para a página de login do Facebook. Assim que eles permitirem a permissão para seu aplicativo, o usuário irá redirecionar para YOUR_SITE_URL / redirect.php. Em troca, obtemos um código como parâmetro GET do Facebook. Usando este valor de código, geramos um primeiro token de acesso de curta duração. E então, por meio desse token de curta duração, geramos um token de acesso de longa duração.
Certifique-se de que a extensão CURL esteja habilitada em seu servidor, caso contrário, nosso código não funcionará como esperado.
redirect.php
<?php
require_once "config.php";
if (isset($_GET['code']) && !empty($_GET['code'])) {
$post = ['client_id'=> CLIENT_ID, "redirect_uri" => REDIRECT_URL, "client_secret" => CLIENT_SECRET, 'code' => $_GET['code']];
$arr_result = getFBResponse($post);
//generate long-lived access token
if (isset($arr_result->access_token)) {
$post1 = ['grant_type' => 'fb_exchange_token', 'client_id'=> CLIENT_ID, "client_secret" => CLIENT_SECRET, 'fb_exchange_token' => $arr_result->access_token ];
$arr_result1 = getFBResponse($post1);
echo "Long Lived Token: ". $arr_result1->access_token;
}
}
function getFBResponse($arr_post = []) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,'https://graph.facebook.com/v2.10/oauth/access_token');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($arr_post));
$response = curl_exec($ch);
return json_decode($response);
}
?>
É isso! Esperamos que você conheça o processo de geração de um token de acesso de longa duração para a API do Facebook. Por favor, compartilhe suas idéias na seção de comentários abaixo.