Estou ciente de que há muitas perguntas sobre os tokens de acesso do Facebook e a dor que eles causam, mas apesar de muita experimentação e da leitura de muitos artigos de blog frustrantemente vagos (FB e outros), ainda estou lutando para obter uma resposta clara para minhas necessidades . Deixe-me resumir meu processo até agora:
- Estou criando um site que, do lado do servidor, precisa puxar as postagens / status de uma única página do Facebook
- Eu sou um administrador dessa página do Facebook
- Eu criei um aplicativo do Facebook
- Usando o Facebook Graph API Explorer , gerei uma chave de curta duração, conectada ao meu aplicativo e à minha conta, que concede permissão à minha conta para visualizar os tokens de acesso para minhas páginas
- Eu converti minha chave de curta duração em uma chave de longa duração (60 dias), cenário de ala 4 a partir deste
E é aqui que estou preso. Minha chave de 60 dias funciona bem para meu servidor puxar as informações necessárias da página, mas até onde eu posso dizer, não há como estender programaticamente essa chave de 60 dias. Também não conheço uma maneira de gerar uma nova chave de curta duração sem ir manualmente para o Facebook Graph API Explorer e criar uma.
Como é o meu servidor que faz as solicitações à API do Facebook e não um sistema baseado em usuário (onde eu poderia facilmente solicitar que um usuário autorizasse o aplicativo do Facebook novamente), isso cria um sistema muito desajeitado. Uma vez que o Facebook se tornou obsoleto offline_access
, não há realmente nenhuma maneira permanente de meu servidor obter informações de minha própria página? Eu realmente 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 .
fonte
Respostas:
Tendo descoberto que é possível gerar um Token de acesso à página do Facebook que não expira (com a ajuda de @Igy), aqui está uma saída clara, passo a passo para todos aqueles que procuram o mesmo:
manage_pages
permissãohttps://graph.facebook.com/oauth/access_token?client_id=<your FB App ID >&client_secret=<your FB App secret>&grant_type=fb_exchange_token&fb_exchange_token=<your short-lived access token>
https://graph.facebook.com/me/accounts?access_token=<your long-lived access token>
access_token
para a página da qual você obterá informaçõesExpires: Never
!Isso deve resolver. Agora você deve ter um token de acesso à página do Facebook que não expira, a menos que:
Qualquer um deles fará com que o token de acesso se torne inválido.
Se estiver recebendo
(#100) Tried accessing nonexisting field (accounts) on node type (Page)
, vá para o Depurador de token de acesso , copie o valor deUser ID
e use-o para substituir a parte "eu" do URL na etapa 9.fonte
manage_pages
opção está naExtended Permissions
guia.Isso é abordado 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 acesso à página (via
/PAGE_ID?fields=access_token
ou/me/accounts
) - o token de acesso à página não terá um tempo de expiraçãofonte
page_access_token
por código em javascript? Gosto da forma de obteruser_access_token
>FB.getAuthResponse()['accessToken'];
Obrigado!Uma abordagem que funciona em 2019
Recentemente, estava tentando alcançar algo semelhante (ao caso de uso descrito neste tópico), mas queria ter certeza de respeitar as políticas atuais do Facebook, então fiz uma pequena pesquisa e aqui estou compartilhando o que descobri.
Meu caso de uso
Portanto, como eu já disse, meu caso de uso é muito semelhante ao descrito aqui; isso é:
Este é, na minha opinião, um caso de uso legítimo, mas eu não tinha certeza de como implementá-lo de uma forma que esteja de acordo com as políticas do Facebook.
A resposta aceita
Segui os passos da resposta aceita e funcionou, exceto que as coisas parecem ter mudado: agora, mesmo que o token de página gerado não expire,
access to data
expira depois de cerca de 60 dias. Você também verá isso se seguir o procedimento e inspecionar o token de página na ferramenta FB Token Debugger .Além disso, o fato de os tokens de página gerados estarem vinculados à conta do usuário também é lamentável, pois se o usuário atualizar sua senha, o token de página também será invalidado.
Como fazer em 2019
Depois de várias horas de pesquisa, me deparei com o seguinte artigo de documentação do Facebook: Business Login for Direct Businesses .
Acontece que agora é possível, seguindo as etapas descritas no artigo acima, gerar um token de página que não está associado a nenhuma conta de usuário do Facebook em particular e que não irá expirar (a menos que o aplicativo FB seja excluído ou o token de aplicativo subjacente é excluído, você sabe ...)
Então, aqui estão as etapas e as partes mais importantes:
manage_pages
epublish_pages
.Esse token nunca irá expirar e não estará vinculado a um usuário específico do Facebook, então é exatamente o que precisamos!
A última parte é garantir que seu aplicativo do Facebook seja aprovado pelo Facebook. Na verdade, é a parte mais importante, porque todo o procedimento é inútil se as pessoas não veem os nossos posts.
Eu queria ter certeza de que poderia confiar no procedimento acima para construir algo para meu cliente sem que o Facebook o rejeitasse no final, então, de antemão (ou seja, antes de começar a trabalhar no projeto do meu cliente), passei por todo o processo de criar uma página, um aplicativo, uma conta de gerente de negócios, etc. Eu verifiquei meu negócio. Enviei meu aplicativo para revisão. Em minha solicitação, fui muito específico sobre meu caso de uso e enfatizei que o aplicativo era para "uso próprio" (ou seja, que a organização está desenvolvendo um aplicativo para si mesma, não para outros usuários do Facebook). Fui aprovado em menos de 24 horas.
Algumas outras observações sobre o processo de revisão do aplicativo:
curl
utilitário (para gerar o token da página e fazer postagens na página do Facebook). Também mostrei como estava usando o Business Manager para vincular o usuário do sistema à página e gerar um token, e assim por diante.Espero que essas informações sejam úteis para pessoas com casos de uso semelhantes.
fonte
Muito obrigado a @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
fonte
Você também pode copiar e colar do painel do aplicativo no Facebook. Os passos:
Vá para https://developers.facebook.com
Selecione seu aplicativo no canto superior direito da página (foto de sua aparência)
Lembre-se de que, embora em teoria seu token não expire, ele está diretamente vinculado a qualquer conta do Facebook em que você esteja conectado. Então, digamos que você altere sua senha ou remova as permissões entre sua conta e seu aplicativo, seu token não será mais válido.
fonte