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 é:
- Estou trabalhando para um distrito escolar.
- Eles estão usando uma ferramenta de software para gerenciar praticamente tudo o que diz respeito ao transporte escolar.
- Essa ferramenta permite que eles enviem notificações por e-mail (para assinantes) quando publicam alertas de atraso de ônibus e alertas de fechamento de escolas.
- Muitas pessoas na comunidade seguem a organização em sua página do Facebook, e esse é o único lugar onde procuram por esses alertas.
- Assim, um funcionário da organização deve publicar manualmente cada notificação na página do Facebook (além de criá-la no software de transporte). Além disso, essas notificações eventualmente expiram (ou são simplesmente excluídas antes de expirarem), de modo que o funcionário precisa voltar mais tarde para excluí-las manualmente também.
- É uma perda de tempo, então o que estamos tentando fazer aqui é desenvolver um sistema simples que pesquisa periodicamente o banco de dados da ferramenta de software em busca de notificações novas (e expiradas) e atualizá-las (ou seja, adicionar e remover) na página do Facebook.
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:
- Você precisa de uma conta de gerente de negócios .
- A verificação será necessária e um contrato digital terá que ser assinado.
- Você precisa adicionar a página de destino do Facebook a essa conta.
- Você precisa criar um aplicativo do Facebook e também transferi-lo para a mesma conta do Business Manager.
- O aplicativo terá que passar pelo processo de revisão do Facebook, pois as seguintes permissões serão necessárias:
manage_pages
e publish_pages
.
- Observação importante Para que as postagens feitas usando o token de geração de página sejam visíveis para usuários que não sejam administradores do aplicativo, esse aplicativo precisará ter sido publicado e aprovado.
- Você ainda pode experimentar o conceito sem enviar para revisão, mas as postagens não serão visíveis publicamente.
- Na conta do Business Manager (somente depois que seu aplicativo e página foram adicionados à conta), você precisa criar o que é chamado de usuário do sistema e dar a esse usuário função de administrador (ou permissões) para a página de destino do Facebook.
- Um usuário do sistema pertence à conta do Business Manager e não está vinculado a um usuário específico. Meu entendimento atual é que um dos principais casos de uso para um usuário do sistema é o acesso programático à API Graph do Facebook (exatamente o que precisamos).
- Então, para esse usuário do sistema, você precisa gerar um token de acesso (que nunca expirará). Você será solicitado a selecionar para qual aplicativo. Em seguida, você selecionará seu aplicativo de destino.
- Em seguida, você precisará usar o token de aplicativo gerado para gerar um token de página, que também nunca expirará. O procedimento é descrito neste artigo como:
GET /<PAGE_ID>?fields=access_token&access_token=<SYSTEM_USER_ACCESS_TOKEN>
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:
- Tive que selecionar uma plataforma para o aplicativo, então selecionei o site .
- Tive de indicar por que o aplicativo precisava das duas permissões e como as usaria.
- Tive de indicar por que o revisor não conseguiu entrar no meu aplicativo e testá-lo (ou seja, porque o aplicativo será usado por um processo de trabalho).
- Para os screencasts obrigatórios, simplesmente apresentei as operações manuais no terminal usando o
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.
- Novamente, fui muito específico sobre meu caso de uso e acho que isso ajudou.
Espero que essas informações sejam úteis para pessoas com casos de uso semelhantes.