Passo a passo para ativar o WebHook dos leads da Meta
- Configurar o APP para enviar WebHook;
- Gerar token de página para vincular o APP à página
- Inscrever APP na página
- Inscrever página ao APP
1. Configurar o APP para enviar WebHook
Acesse a página https://developers.facebook.com/apps/
- Vá no detalhe do APP que vai ser responsável por enviar o webhook
- Acesse o menu WebHook
- Na tela central, selecione o produto Page
- Informe a URL de callback e informe um token a ser verificado no processo, esse token deve ser gerado e informado no campo, como por exemplo @T0k3nDe#x3mplo@
- Clique em Verificar e salvar
Importante
Ao clicar em Verificar e salvar a Meta vai fazer uma chamada do tipo GET no mesmo endpoint do Webhook passando os parâmetros via query params hub.mode, hub.challenge e hub.verify_token. A aplicação deve validar se o token é igual ao informado no passo anterior, se o hub.mode é igual a "subscribe" e responder como text/plain exatamente o valor enviado na no parâmetro hub.challenge.
Exemplo de código:
[HttpGet("{endpoint}")]
public IActionResult CheckWebhook(
[FromQuery(Name = "hub.mode")] string? mode,
[FromQuery(Name = "hub.challenge")] string? challenge,
[FromQuery(Name = "hub.verify_token")] string? verifyToken
)
{
if (!string.Equals(mode, "subscribe", StringComparison.OrdinalIgnoreCase))
{
return BadRequest("Parâmetro 'hub.mode' inválido.");
}
if (string.IsNullOrWhiteSpace(challenge))
{
return BadRequest("Parâmetro 'hub.challenge' ausente.");
}
if (!_webhookService.IsValidVerifyToken(verifyToken))
{
return StatusCode(StatusCodes.Status403Forbidden, "Invalid verify token.");
}
return Content(challenge, "text/plain");
}
Após validado, serão exibidas diversas opções para ativar a assinatura no campo interessado, no caso do lead, a opção que devemos clicar em Assinar (switch azul) é a leadgen. Há uma opção de testar, para isso basta acionar o link Teste ao lado do switch de ativação para que uma modal de teste abra, na modal, basta clicar em enviar para o servidor. Feito isso a aplicação deve receber uma requisição do webhook configurado, confirmando que o passo de configuração do APP foi realizada com sucesso.
2. Criar tokens de usuário e de página para habilitar a vinculação (inscrição) do APP na página
- Acessar a página https://developers.facebook.com/tools/explorer
- Logar na conta do facebook, caso ainda não tenha feito
- Em App da Meta, selecione o APP configurado no passo 1
- Em Usuário ou Página, selecione Obter token de acesso da Página. Na tela de confirmação/reconexão clique em reconectar, ou caso a página de interesse não esteja aparecendo na listagem, na tela de reconexão clique no link Editar configurações anteriores., para habilitar a nova página que vai ser acionada.
- Nas Permissões escolha no mínimo a pages_manage_metadata e leads_retrieval, caso seja exigido mais permissões, será informado no retorno das requisições. Então só repetir esse passo escolhendo as demais permissões necessárias/solicitadas. Feito isso clique no botão Generate Access Token e copie o token gerado.
- Faça uma requisição no endpoint de acordo com o cUrl abaixo:
# Requisição 1
curl --location 'https://graph.facebook.com/v24.0/oauth/access_token?grant_type=fb_exchange_token&client_id={{ClientIdDoApp}}&client_secret={{ClientSecretDoApp}}&fb_exchange_token={{TokenRecemGerado}}'
ClientIdDoApp e ClientSecretDoApp estão na aba Configurações do app/Básico, sendo ClientIdDoApp = ID do Aplicativo e ClientSecretDoApp = Chave Secreta do Aplicativo
- A resposta vai ser um token de usuário de longa duração, que para fins de exemplo e referência deste tutorial, vamos salvar na variável TokenDeLongaDuracaoDoUsuario. Feito isso, deverá ser chamado outro endpoint para gerar o token de página, usando esse token de longa duração como base, de acordo com o exemplo abaixo:
# Requisição 2
curl --location 'https://graph.facebook.com/v24.0/{{IdDoUsuario}}/accounts?access_token={{TokenDeLongaDuracaoDoUsuario}}'
IdDoUsuario deve ser resgatado através da chamada do endpoint abaixo, adotando a propriedade id retornada:
# Requisição 3
curl --location 'https://graph.facebook.com/v24.0/me?fields=id%2Cname&access_token={{PrimeiroTokenGerado}}'
Sendo o PrimeiroTokenGerado resgatado ao clicar no botão Generate Access Token, na página https://developers.facebook.com/tools/explorer
- Salve o token gerado na Requisição 2, pois ele será responsável por efetivar as inscrições na página, e para fins deste tutorial, vamos armazenar esse token na variável TokenLongaDuracaoPagina.
Cada página deve ter um token e por consequência, o passo a seguir deve ser executado para cada página.
- Inscreva o APP na página realizando a chamada do endpoint abaixo:
#Requisição 4
curl --location --request POST 'https://graph.facebook.com/{{CodigoDaPaginaNaMeta}}/subscribed_apps?access_token={{TokenLongaDuracaoPagina}}&subscribed_fields=leadgen'
CodigoDaPaginaNaMeta é o código da página que se encontra no link https://business.facebook.com/ no menu Contas/Páginas. Parâmetro fixo: subscribed_fields=leadgen
3. Vincular CRM da página ao APP
- Acessar o link https://business.facebook.com/latest/settings/leads_access, caso não abra diretamente a função, basta acessar o menu Integrações/Acesso a lead
- Selecionar a página de interesse
- Abrir aba CRM
- Clicar em Assing CRM
- Escolher o APP do passo 1
- Clicar em confirmar
O App deve aparecer na seção CRMs com acesso a leads
Seguindo esses passos, todo o anuncio preenchido pelo cliente para as páginas configuradas na segunda etapa deste tutorial estarão recebendo os eventos via webhook