Um token de acesso é uma string opaca que identifica um usuário, um app ou uma Página. Esse identificador pode ser usado pelo app para fazer chamadas da Graph API. Ele também indica a data em que expirará e informa qual app o gerou. Devido às verificações de privacidade, a maioria das chamadas de API em apps da Meta precisa incluir um token de acesso. Existem tipos específicos de tokens de acesso para diferentes casos de uso e vários métodos para obtê-los.
Tipo de token de acesso | Descrição |
---|---|
Um token de acesso do app é usado para ler e modificar as configurações do app. Ele é gerado a partir de uma chave secreta do app e é usado durante chamadas que alteram as configurações de todo o app. Você obtém um token de acesso do app via chamada de servidor para servidor. | |
Um token de cliente é usado para acessar APIs no nível do app. Para fins de identificação, você pode incorporá-lo aos seus apps nativos ou para desktop. Esse token não se destina a ser um identificador secreto porque é incorporado em apps e pode ser encontrado no Painel de Apps da Meta. | |
Um token de acesso à Página é usado para ler, gravar e modificar os dados que pertencem a uma Página do Facebook. Ele é obtido da seguinte forma: primeiro, obtenha o token de acesso do usuário e, depois, use-o para obter um token de acesso à Página via Graph API. | |
Os tokens de acesso do usuário do sistema devem ser usados em apps que executam ações programáticas e automatizadas nos objetos de anúncio ou nas Páginas dos clientes empresariais sem depender de uma entrada do usuário do app nem exigir uma nova autenticação em uma data futura. | |
Os tokens de acesso do usuário são destinados a apps que executam ações em tempo real, com base na entrada do usuário. Esse tipo de token de acesso é necessário em todos os momentos que o app chama uma API para ler, modificar ou gravar dados do Facebook de uma pessoa específica em nome dela. Em geral, um token de acesso do usuário é obtido via diálogo Entrar e precisa da permissão da pessoa para que seu app obtenha um. |
Embora cada plataforma gere tokens de acesso por meio de diferentes APIs, todas as plataformas seguem a estratégia básica para obter um token de usuário:
Os tokens de acesso de usuário existem em duas formas: tokens de curta duração e tokens de longa duração. Tokens de curta duração têm normalmente uma vida útil de cerca de uma ou duas horas, enquanto tokens de longa duração têm normalmente uma vida útil de cerca de 60 dias. Não dependa desses períodos de vida útil permanecerem iguais, pois eles podem ser alterados sem aviso ou expirar antes. Veja mais em como lidar com erros.
Os tokens de acesso gerados por meio de login da web são tokens de curta duração, mas você pode convertê-los em tokens de longa duração fazendo uma chamada de API do lado do servidor, juntamente com a chave secreta do app.
Apps para celular que usam SDKs do Facebook para iOS e Android adquirem tokens de longa duração por padrão.
Ao usar tokens de longa duração, apps com acesso padrão à API de Marketing do Facebook receberão tokens de longa duração que não têm tempo de expiração. Esses tokens ainda estão sujeitos à invalidação por outras razões, mas não expirarão exclusivamente com base no tempo. Isso também é verdade sobre os tokens de acesso para usuários do sistema no Gerenciador de Negócios.
É importante saber que a maioria dos tokens de acesso são portáteis. No entanto, a Apple não permite mover tokens para servidores. Quando você tem um token de acesso, é possível usá-lo para fazer chamadas de um cliente móvel, um navegador da web ou do seu servidor para servidores do Facebook. Se um token é obtido em um cliente, você pode enviar esse token para seu servidor e usá-lo em chamadas de servidor para servidor. Se um token é obtido por meio de uma chamada de servidor, também é possível enviar o token para um cliente e, depois, fazer as chamadas a partir do cliente.
Mover tokens entre seu cliente e o servidor deve ser feito de forma segura, via HTTPS, para garantir a segurança das contas das pessoas. Leia mais sobre as implicações de mover tokens entre os clientes e seu servidor.
Plataformas diferentes têm diferentes métodos para iniciar esse processo e incluem funcionalidades para gerenciar tokens de acesso em nome do desenvolvedor e permissões concedidas pelas pessoas:
Os SDKs do Facebook para Android gerenciam automaticamente tokens de acesso de usuário por meio da classe com.facebook.AccessToken
. Você pode aprender mais sobre como obter um token de acesso de usuário implementando o Login do Facebook para Android. Você pode recuperar o token de acesso do usuário inspecionando Session.getCurrentAccessToken
.
@Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); accessToken = AccessToken.getCurrentAccessToken(); }
Os SDKs do Facebook para iOS gerenciam automaticamente tokens de acesso de usuário por meio da classe FBSDKAccessToken
. Você pode aprender mais sobre como obter um token de acesso de usuário implementando o Login do Facebook para iOS. Você pode recuperar o token de acesso inspecionando FBSDKAccessToken.currentAccessToken
.
- (void)viewDidLoad { [super viewDidLoad]; NSString *accessToken = [FBSDKAccessToken currentAccessToken]; }
O SDK do Facebook para JavaScript obtém e mantém tokens de acesso de usuário automaticamente em cookies de navegador. Você pode recuperar o token de acesso de usuário fazendo uma chamada para FB.getAuthResponse
que inclua uma propriedade accessToken
na resposta.
FB.getLoginStatus(function(response) { if (response.status === 'connected') { var accessToken = response.authResponse.accessToken; } } );
Acesse a documentação de SDKs da web do Facebook para ver um exemplo de código completo.
Quando você criar um app da web sem o SDK do Facebook para JavaScript, será preciso gerar um token de acesso durante as etapas descritas neste documento.
Os tokens de acesso do app são usados para fazer solicitações para APIs do Facebook em nome de um app, em vez de um usuário. Esses tokens podem ser usados para criar e gerenciar usuários de teste, ler insights do app ou modificar os parâmetros dele.
Alguns dados de usuário, que normalmente seriam visíveis para um app fazendo uma solicitação com um token de acesso de usuário, nem sempre ficarão visíveis com um token de acesso do app. Se você está lendo os dados do usuário e utilizando-os no seu app, é preciso usar um token de acesso de usuário em vez de um token de acesso do app.
Tokens de acesso do app são considerados inseguros se o seu app está definido para Native/Desktop
nas configurações avançadas do seu Painel de Apps e, portanto, não funcionarão com chamadas de API. Isso ocorre porque supomos que os apps nativos ou para desktop terão a chave secreta do app embutida em algum lugar (e, portanto, o token de acesso do app gerado usando essa chave não é seguro).
Para gerar um token de acesso do app, você precisará:
curl -X GET "https://graph.facebook.com/oauth/access_token ?client_id={your-app-id} &client_secret={your-app-secret} &grant_type=client_credentials"
Essa chamada retornará um token de acesso do app que pode ser usado no lugar de um token de acesso de usuário para fazer chamadas de API como mencionado acima. Vale lembrar que, para a segurança, o token de acesso do app nunca deve ser codificado em código do lado do cliente. Isso concederia a todas as pessoas que carregassem sua página da Web ou descompilassem seu app acesso total à chave secreta do app e, portanto, a capacidade de modificá-lo. Isso implica que, na maior parte do tempo, você usará tokens de acesso do app apenas em chamadas de servidor para servidor.
Observe que, por esse pedido usar a chave secreta do app, ele nunca deve ser feito no código do lado do cliente ou em um binário do app que possa ser descompilado. É importante que a chave secreta do app nunca seja compartilhada com ninguém. Portanto, essa chamada de API só deve ser feita usando o código do lado do servidor.
Há um outro método para fazer chamadas para a Graph API que não requer o uso de um token de acesso do app gerado. Basta passar o ID e a chave secreta do seu app como o parâmetro access_token
ao fazer uma chamada:
curl -i -X GET "https://graph.facebook.com/{api-endpoint}&access_token={your-app_id}|{your-app_secret}"
Para escolher entre usar um token de acesso gerado ou esse método, você precisa considerar o local onde ocultou a chave secreta do app.
Tokens de acesso à Página são usados em chamadas da Graph API para gerenciar Páginas do Facebook. Para gerar um token de acesso à Página, um administrador dela deve conceder ao app a permissão (ou permissões) para Páginas necessária. Quando ela for concedida, você poderá recuperar o token de acesso à Página usando um token de acesso de usuário com as permissões necessárias.
curl -i -X GET "https://graph.facebook.com/{your-user-id}/accounts?access_token={user-access-token}"
Essa ação retorna uma lista de Páginas em que você tem uma função e informações de cada uma, como a categoria, as permissões específicas e o token de acesso à Página.
{ "data": [ { "access_token": "EAACEdE...", "category": "Brand", "category_list": [ { "id": "1605186416478696", "name": "Brand" } ], "name": "Ash Cat Page", "id": "1353269864728879", "tasks": [ "ANALYZE", "ADVERTISE", "MODERATE", "CREATE_CONTENT", "MANAGE" ] }, { "access_token": "EAACEdE...", "category": "Pet Groomer", "category_list": [ { "id": "163003840417682", "name": "Pet Groomer" }, { "id": "2632", "name": "Pet" } ], "name": "Unofficial: Tigger the Cat", "id": "1755847768034402", "tasks": [ "ANALYZE", "ADVERTISE", "MODERATE", "CREATE_CONTENT" ] } ] }
Com um token de acesso à Página, você pode realizar chamadas à API em nome de uma Página. Por exemplo, você pode postar uma atualização de status para uma Página (em vez de postar na Linha do Tempo do usuário) ou ler os dados de Insights da Página.
Tokens de acesso à Página são únicos para cada Página, administrador e app.
A partir da versão 13 do SDK para iOS e Android, com lançamento marcado para o início de 2022, um token de cliente será necessário para todas as chamadas à Graph API.
Assim como os tokens de app, os tokens de cliente fazem solicitações da Graph API em nome de apps em vez de usuários.
Ao contrário de outros tipos, os tokens de acesso do cliente não podem ser usados sozinhos em solicitações. Eles devem ser combinados com o ID do app. Para fazer isso, acrescente seu token ao final do ID do app, separado por um símbolo de barra (|
):
{app-id}|{client-token}
Por exemplo:
access_token=1234|5678
Para receber o token de acesso do cliente para um app, é necessário fazer o seguinte:
Espere mudanças nas durações de todos os tipos de tokens de acesso ao longo do tempo, à medida que o Facebook fizer alterações no que está armazenado neles e em como são codificados. Você pode esperar que eles aumentem e diminuam com o tempo. Use um tipo de dado de duração variável sem um tamanho máximo específico para armazenar tokens de acesso.
Use a ferramenta token de acesso para ver uma lista dos seus tokens e as informações de depuração de cada um.