sirius·manual do time
Infraestrutura · Meta

O token Meta que nunca expira

← voltar pros guias

Guia de como a Sirius criou um token de acesso ao Meta (Facebook/Instagram) que não expira nunca e já vem com todas as permissões. É a fundação do nosso ecossistema próprio: gestão de anúncios pelas skills, e no futuro o planejador social publicando direto no Instagram.

Guia técnico, de admin. Quem opera é o Thiago ou o Álvaro. Feito em 03/06/2026, registrando exatamente o que funcionou (e os muros que a gente bateu pra chegar lá).

O problema que isso resolve

O token velho era um token de usuário (preso na conta pessoal do Álvaro). Tinha dois defeitos crônicos:

A solução é trocar o tipo de token: de token de usuário para token de usuário do sistema (system user).

Token de usuário (antigo)Token de system user (novo)
Preso a quêconta pessoal de alguémninguém — vive no Portfólio Empresarial
Expiracorta acesso a cada ~90 diasnunca
Permissõescaíam a cada regeraçãofixas, não dependem de regerar

Conceitos rápidos (pra não decorar, entender)


Parte 1 — Criar o app dentro do BM

O app precisa ser do tipo Empresa (Business) e nascer dentro do BM da Sirius. Se você criar um app fora e tentar "reivindicar" depois, o Meta dá erro genérico (foi o primeiro muro que a gente bateu — o app antigo era tipo "Nenhum", não dá pra reivindicar).

  1. No Business Settings do BM Sirius → Contas → Apps → Adicionar → Criar um app (isso já vincula o app ao BM).
  2. Tipo do app: Empresa / Business.
  3. Dá um nome (cosmético, dá pra mudar depois). O nosso: siriuspetvethub.

Parte 2 — Ligar os casos de uso

Os casos de uso são o que libera cada grupo de permissão na hora de gerar o token. Sem eles, a lista de permissões vem capada. Marca estes 4:

Caso de usoPra quê
Criar e gerenciar anúncios com a API de Marketinggestão de campanhas
Capturar e gerenciar leads de anúnciospuxar leads de formulário
Gerenciar mensagens e conteúdo no Instagrampublicar no IG (planejador social)
Gerenciar tudo na sua Páginapublicar na página FB + insights
Não marca: anúncios de app/install, Threads, Audience Network, Catálogo, Messenger, WhatsApp, oEmbed. Não é nosso e só polui.

Não precisa publicar o app (deixa em "Não publicado"). Publicar serve pra quando usuários externos logam no app — não é o nosso caso, a gente usa token de system user sobre ativos do próprio BM, e isso funciona em modo de desenvolvimento.

Parte 3 — Verificação do negócio

No Centro de Contas / Verificações, dispara a verificação do negócio do BM. É a etapa de latência (leva dias, do lado do Meta). Os anúncios não dependem dela, mas publicar no Instagram em produção depende. Quanto antes apertar o botão, antes destrava.


Parte 4 — Criar o system user e gerar o token

Em Business Settings → Usuários → Usuários do sistema:

  1. Adicionar → nome (ex: siriusadscontent) → função.
Muro que a gente bateu: negócio não-verificado só deixa 1 system user Admin, e esse slot já era de outro robô. Solução: cria como Funcionário (Employee). Não muda nada — o que dá poder ao robô não é o papel, são os ativos atribuídos.
  1. Atribuir ativos → adiciona a conta de anúncio, a página e a conta do Instagram da Sirius, cada uma com Controle total.
  2. Gerar token → escolhe o app siriuspetvethub → deixa em "o token nunca expira" → marca as permissões (lista abaixo) → Gerar.

As permissões pra marcar

Anúncios:   ads_management · ads_read · leads_retrieval
Negócio:    business_management
Páginas:    pages_show_list · pages_read_engagement · pages_manage_ads
            pages_manage_posts · pages_manage_metadata · read_insights
Instagram:  instagram_basic · instagram_content_publish · instagram_manage_comments
O token aparece UMA vez só. Copia na hora e guarda antes de fechar o diálogo. Se fechar sem copiar, tem que anular e gerar de novo.
Se instagram_content_publish vier cinza/indisponível, é a verificação que ainda não passou. Marca o resto e gera assim mesmo — o token de anúncios fica completo, e o IG religa depois sem refazer nada.

Onde o token fica guardado

O token e o segredo do app são sensíveis — nunca vão pro repositório. Ficam só na máquina, em arquivos fora do git:


Parte 5 — Cobrir as contas de cliente (partner share)

O token recém-criado só enxerga os ativos da Sirius. As contas de cliente moram em BMs próprios. Pra um token só alcançar a carteira inteira, cada BM de cliente precisa compartilhar a conta com o BM da Sirius. Como o Álvaro é admin dos dois lados, ele aprova sozinho.

Não dá por API. A gente tentou automatizar e o Meta recusa (o app não tem a "capability" pra isso). É manual, no painel, mas é rápido.

Parte A — no BM do CLIENTE (compartilha pra fora):

  1. Troca pro BM do cliente no Business Settings.
  2. Usuários → Parceiros → Adicionar → "Compartilhar ativos com outra empresa pelo ID do parceiro".
  3. Insere o ID do BM Sirius: 104259242738344.
  4. Seleciona a conta de anúncio do cliente → Controle total → confirma.

Parte B — no BM SIRIUS (atribui ao robô):

  1. Volta pro Sirius Pet Vet HubUsuários do sistema → o robô → Atribuir ativos.
  2. A conta recém-compartilhada aparece em Contas de anúncio → marca → Controle total → salva.

Repete pra cada cliente. Pra publicar conteúdo do cliente também (planejador social), compartilha igual a página e o Instagram dele, não só a conta de anúncio.


Parte 6 — Validar e ligar na skill

Antes de confiar no token, confirma ao vivo que ele enxerga as contas. Com a skill meta-ads-ratos instalada:

cd ~/.claude/skills/meta-ads-ratos
.venv/bin/python scripts/read.py accounts

Tem que listar as contas (Sirius + clientes compartilhados). Aí é só colar o token novo no META_ADS_TOKEN do .env da skill, junto com o META_APP_ID e META_APP_SECRET do app novo. O token antigo fica comentado como emergência.

Pronto. O token não tem mais prazo de validade, e as permissões não dependem de ninguém regerar. A dor acabou.

Se der ruim (os muros que a gente pagou)

Quando refazer este guia