Token de access FB de longa duração para o servidor extrair informações da página do FB

Estou ciente de que há muitas dúvidas sobre os tokens de access do Facebook e o sofrimento que eles causam, mas apesar de muita experimentação e leitura de muitos artigos de blog frustrantemente vagos (FB e outros), ainda estou lutando para obter uma resposta clara às minhas necessidades . Deixe-me sucintamente quebrar meu processo até agora:

  • Eu estou criando um site que, do lado do servidor, precisa puxar os posts / status de uma única página do Facebook
  • Eu sou um administrador dessa página no Facebook
  • Eu criei um aplicativo do Facebook
  • Usando o Facebook Graph API Explorer , geramos uma chave de curta duração, conectada ao meu aplicativo e à minha conta, que concede permissão à minha conta para exibir os tokens de access das minhas páginas.
  • Eu converti minha chave de curta duração em uma chave de longa duração (60 dias) no cenário 4 deste

E aqui é onde eu estou preso. Minha chave de 60 dias funciona bem para o meu servidor puxar as informações necessárias da página, mas até onde posso dizer, não há como estender programaticamente a chave de 60 dias. Eu também não sei de uma maneira de gerar uma nova chave de curta duração sem ir manualmente ao Explorer da API do Graph do Facebook e criar uma.

Como é o meu servidor que faz os pedidos para a API do Facebook e não um sistema baseado no usuário (onde eu poderia facilmente solicitar que um usuário autorize o aplicativo do Facebook novamente), isso cria um sistema muito desajeitado. Uma vez que o Facebook preteriu offline_access , não há realmente nenhuma maneira permanente de ter meu servidor puxando informações da minha própria página? Terei que criar uma nova chave manualmente e atualizar manualmente meu servidor com ela a cada 60 dias?

Ou há algo que estou perdendo?

Atualizar:

O guia passo a passo que foi encontrado anteriormente aqui foi migrado para sua própria resposta .

Estas são as etapas que estavam anteriormente na questão – elas foram migradas para essa resposta.

Tendo descoberto que é possível gerar um Token de Acesso à Página do Facebook que não expira (com a ajuda da @Igy), aqui está um passo claro e passo a passo para todos aqueles que procuram o mesmo:

  1. Certifique-se de que você é o administrador da página do FB que você deseja obter informações de
  2. Crie um aplicativo FB (deve estar com a mesma conta de usuário que é a página admin)
  3. Dirija-se ao Explorer da API do Graph do Facebook
  4. No canto superior direito, selecione o aplicativo FB criado na lista suspensa “Aplicativo”.
  5. Clique em “Obter o token de access”
  6. Certifique-se de adicionar a permissão manage_pages
  7. Converta esse token de access de curta duração em um de longa duração fazendo esta chamada da Graph API: https://graph.facebook.com/oauth/access_token?client_id=&client_secret=&grant_type=fb_exchange_token&fb_exchange_token=
  8. Pegue o novo token de access de longa duração retornado
  9. Faça uma chamada da Graph API para ver suas contas usando o novo token de access de longa duração: https://graph.facebook.com/me/accounts?access_token= token de access de https://graph.facebook.com/me/accounts?access_token=
  10. Pegue o access_token para a página que você vai puxar informações de
  11. Lint o token para ver que está definido para Expires: Never !

Isso deve resolver. Agora você deve ter um token de access à página do Facebook que não expira, a menos que:

  • Você muda sua senha da conta do Facebook
  • Você perde o access de administrador para a página de destino
  • Você exclui ou desautoriza seu aplicativo do Facebook

Qualquer um deles fará com que o token de access se torne inválido.

Se você estiver recebendo (#100) Tried accessing nonexisting field (accounts) on node type (Page) , vá para o Access Token Debugger , copie o valor de User ID e use-o para replace a parte “me” do URL em passo 9.

Isso é coberto no documento de suspensão de uso do Acesso Offline

Use o token de 60 dias para o administrador da página recuperar um token de access de página (via /PAGE_ID?fields=access_token ou /me/accounts ) – o token de access à página não terá um tempo de expiração

Muito obrigado ao @redhotvengeance pelo guia passo-a-passo.

Depois de algum tempo, agora está claramente descrito na documentação do Facebook:

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

Estendendo Tokens de Acesso à Página

Os aplicativos podem recuperar um token de access à página dos usuários administradores da página quando eles se autenticam com a permissão manage_pages. Se o token de access do usuário usado para recuperar o token de access à página tiver vida curta, o token de access à página também terá vida curta.

Para obter um token de access à página de longa duração, troque o token de access do usuário por um de longa duração, conforme descrito acima, e solicite o token de access à página. O token de access à página resultante não terá nenhum tempo de expiração.

Você também pode copiar e passar do painel do aplicativo no facebook. Os passos:

  1. Vá para https://developers.facebook.com

  2. Selecione seu aplicativo no canto superior direito da página (foto do que parece)

  3. Clique no Messenger a partir das opções à esquerda (irá definir automaticamente) (foto do que parece)
  4. Vá para a seção “Geração de token” na página. Selecione para qual página você deseja gerar o token. (foto de como essa seção se parece)
  5. Copie e passe o token da sua página para onde você precisar.

Tenha em mente que, embora, em teoria, seu token não expire, ele está diretamente ligado à conta do Facebook que você accessu. Então, digamos que você altere sua senha ou remova as permissions entre sua conta e seu aplicativo. Assim, seu token não será mais válido.