Os tokens padrão de acesso ao usuário e à página têm curta duração e expiram em horas. No entanto, é possível trocar um token de curta duração por um de longa duração.
Quando você usa o SDK do iOS, Android ou JavaScript, o SDK atualiza automaticamente os tokens se a pessoa tiver usado o app nos últimos 90 dias. Os apps para celular nativos que usarem SDKs do Facebook terão tokens de longa duração para acesso do usuário, válidos por cerca de 60 dias. Esses tokens serão atualizados uma vez ao dia quando a pessoa que usar seu app fizer uma solicitação aos servidores do Facebook. Se nenhuma solicitação for feita, o token expirará depois de 60 dias, e a pessoa terá que passar pelo fluxo de login novamente para obter um novo token.
Versão mais recente da Graph API: v21.0
Se você precisar de um token de longa duração para acesso do usuário, é possível gerá-lo a partir de um token de curta duração para acesso do usuário. Um token de longa duração é válido, normalmente, por cerca de 60 dias.
Você precisará do seguinte:
Consulte o ponto de extremidade GET oauth/access_token
.
curl -i -X GET "https://graph.facebook.com/{graph-api-version}/oauth/access_token? grant_type=fb_exchange_token& client_id={app-id}& client_secret={app-secret}& fb_exchange_token={your-access-token}"
{ "access_token":"{long-lived-user-access-token}", "token_type": "bearer", "expires_in": 5183944 //The number of seconds until the token expires }
Este é o fluxo de trabalho para gerar um token de longa duração para acesso do usuário:
Depois de recuperar o token de longa duração, você poderá usá-lo no servidor ou enviá-lo de volta ao cliente para que seja usado por ele.
Não é possível usar um token expirado para solicitar um token de longa duração. Se o token expirou, o app deve enviar o usuário pelo fluxo de login novamente para gerar um novo token de acesso de curta duração.
Faça essa chamada do seu servidor, não de um cliente. A chave secreta do app está incluída nessa chamada de API, por isso, nunca faça a solicitação no lado do cliente. Em vez disso, implemente o código no lado do servidor que faz a solicitação e passe a resposta que contém o token de longa duração para o código no lado do cliente. A string será diferente da string do token original; portanto, se você estiver armazenando os tokens, substitua o anterior.
Não use os mesmos tokens de longa duração em mais de um cliente da web (ou seja, quando a pessoa entra em mais de um computador). Em vez disso, você deve usar os tokens de longa duração no seu servidor para gerar um código e usá-lo para obter um token de longa duração no cliente. Veja abaixo informações sobre como gerar tokens de longa duração usando tokens de longa duração no lado do servidor.
Se você precisar de um token de longa duração de acesso à Página, será possível gerá-lo a partir de um token de longa duração para acesso do usuário. O token de longa duração de acesso à Página não tem uma data de validade e somente expira ou é invalidado sob determinadas condições.
Você precisará do seguinte:
Consulte o ponto de extremidade GET {app-scoped-user-id}?accounts
.
curl -i -X GET "https://graph.facebook.com/{graph-api-version}/{app-scoped-user-id}/accounts? access_token={long-lived-user-access-token}"
{ "data":[ { "access_token":"{long-lived-page-access-token}", "category":"Brand", "category_list":[ { "id":"1605186416478696", "name":"Brand" } ], "name":"Cute Kitten Page", "id":"{page-id}", "tasks":[ "ANALYZE", "ADVERTISE", "MODERATE", "CREATE_CONTENT", "MANAGE" ] } ], "paging":{ "cursors":{ "before":"MTM1MzI2OTg2NDcyODg3OQZDZD", "after":"MTM1MzI2OTg2NDcyODg3OQZDZD" } } }
O Facebook tem uma opção para obter tokens de longa duração de acesso para que os apps evitem o acionamento dos sistemas de spam automatizados do Facebook. App que:
Em um alto nível, veja como você pode obter um token de longa duração para o cliente:
Consulte o ponto de extremidade GET oauth/client_code
. O URI de redirecionamento deve ser o valor exato definido no Painel de Aplicativos no cartão Login do Facebook > Configurações > Configurações OAuth do cliente.
curl -i -X GET "https://graph.facebook.com/{graph-api-version}/oauth/client_code? client_id={app-id}& client_secret={app-secret}& redirect_uri={app-redirect-uri}& access_token={long-lived-user-access-token}"
{ "code":"{code-for-your-client}" }
Depois de recuperar o código do servidor do Facebook, você precisará enviá-lo ao cliente por meio de um canal protegido. Depois, será necessário que você faça uma solicitação do cliente para o ponto de extremidade /oauth/access_token
:
curl -i -X GET "https://graph.facebook.com/{graph-api-version}/oauth/access_token? code={code-for-your-client}& client_id={app-id}& redirect_uri={app-redirect-uri}& machine_id= {your-client-machine-id}"
O machine_id
é um parâmetro opcional que identifica e rastreia clientes. Ele é usado para segurança e prevenção a spam. Trata-se de um valor por cliente, e não por usuário. Se você já fez chamadas para obter um código e recebeu um machine_id
, inclua-o na sua solicitação de código.
{ "access_token":"{long-lived-access-token}", "expires_in":5183944, //The number of seconds until the token expires "machine_id":"{your-client-machine-id}" }
Este é o fluxo de trabalho para gerar um token de longa duração: