Catálogo

A Extensão do Facebook para Empresas (FBE, pelas iniciais em inglês) usa o Catálogo para importar o inventário da empresa. Ela possibilita o uso de vários recursos, como anúncios dinâmicos, Lojas da Página e cartão de serviço em destaque. Apesar de ser uma parte opcional da integração, ela é obrigatória para alguns recursos.

O catálogo do Facebook tem o próprio conjunto de APIs. Porém, a FBE está integrada a algumas delas para que você atualize com facilidade o inventário de uma empresa na sua plataforma (sem a necessidade de acompanhar os IDs do catálogo do Facebook).

Consulte os campos compatíveis para garantir que os campos necessários sejam preenchidos corretamente no catálogo de anúncios dinâmicos e nos casos de uso comercial (Loja da Página, Compras no Instagram e Marketplace).

Atualizar inventário

Há duas formas de atualizar os inventários:

  • Push: use a API para enviar o catálogo por push para o Facebook (recomendado).
  • Pull: configure o Facebook para que efetue pull do catálogo da sua plataforma (não recomendado pois ocasiona inventários obsoletos e carga desnecessária no servidor).

Métodos push

Recomendamos usar um dos métodos push (API em Lote ou API de Carregamento Único do Feed), pois eles permitem atualizar o inventário instantaneamente e reduzem a carga no servidor dos dois lados. O access_token usado aqui é o mesmo retornado pelo Login de Empresa e pelo Webhook.

Você precisa enviar o inventário completo da empresa assim que receber um novo Webhook de instalação. Sempre que uma empresa alterar o próprio inventário no seu site, será necessário enviar uma atualização.

API em Lote

Recomendada para a maioria das empresas de comércio eletrônico. A API em Lote é padrão da API de Catálogo do Facebook e útil para empresas que têm inventários grandes (com mais de 100 itens) e/ou precisam atualizar os itens com frequência.

API de Carregamento Único do Feed

Disponível para empresas com serviços com hora marcada. A API de Carregamento Único do Feed é padrão da API de Catálogo do Facebook e útil para empresas que têm inventários pequenos (com menos de 100 itens).

Nesse método, você envia um inventário completo sempre que uma atualização é feita, o que substitui totalmente o inventário no catálogo do Facebook.

Etapa 1. Obtenha o ID do feed criado durante a instalação da FBE enviando o ID do catálogo conectado (a partir da notificação de webhook ou do ponto de extremidade da API de instalação da FBE):

curl -G \
-d "access_token=<ACCESS_TOKEN>" \
https://graph.facebook.com/<API_VERSION>/<CATALOG_ID>/product_feeds

Saiba mais sobre a API de Feed de Produtos.

Etapa 2. Faça carregamentos únicos no feed:

Exemplo – Arquivos de feed hospedados em uma localização pública.

Explorador da Graph API
curl -X POST \
  -F 'url="http://www.example.com/sample_feed.xml"' \
  -F 'access_token=<ACCESS_TOKEN>' \
  https://graph.facebook.com/{FEED_ID}/uploads
POST /{FEED_ID}/uploads HTTP/1.1
Host: graph.facebook.com

url=http%3A%2F%2Fwww.example.com%2Fsample_feed.xml
/* PHP SDK v5.0.0 */
/* make the API call */
try {
  // Returns a `Facebook\FacebookResponse` object
  $response = $fb->post(
    '/{FEED_ID}/uploads',
    array (
      'url' => 'http://www.example.com/sample_feed.xml',
    ),
    '{access-token}'
  );
} catch(Facebook\Exceptions\FacebookResponseException $e) {
  echo 'Graph returned an error: ' . $e->getMessage();
  exit;
} catch(Facebook\Exceptions\FacebookSDKException $e) {
  echo 'Facebook SDK returned an error: ' . $e->getMessage();
  exit;
}
$graphNode = $response->getGraphNode();
/* handle the result */
/* make the API call */
FB.api(
    "/{FEED_ID}/uploads",
    "POST",
    {
        "url": "http:\/\/www.example.com\/sample_feed.xml"
    },
    function (response) {
      if (response && !response.error) {
        /* handle the result */
      }
    }
);

Exemplo – Arquivos de feed diretamente do computador local. O caminho do arquivo precisa ser alterado de acordo com o caso de uso.

Explorador da Graph API
curl -X POST \
  -F 'file=@catalog.csv;type=text/csv' \
  -F 'access_token=<ACCESS_TOKEN>' \
  https://graph.facebook.com/{FEED_ID}/uploads
POST /{FEED_ID}/uploads HTTP/1.1
Host: graph.facebook.com

file=%40catalog.csv%3Btype%3Dtext%2Fcsv
/* PHP SDK v5.0.0 */
/* make the API call */
try {
  // Returns a `Facebook\FacebookResponse` object
  $response = $fb->post(
    '/{FEED_ID}/uploads',
    array (
      'file' => '@catalog.csv;type=text/csv',
    ),
    '{access-token}'
  );
} catch(Facebook\Exceptions\FacebookResponseException $e) {
  echo 'Graph returned an error: ' . $e->getMessage();
  exit;
} catch(Facebook\Exceptions\FacebookSDKException $e) {
  echo 'Facebook SDK returned an error: ' . $e->getMessage();
  exit;
}
$graphNode = $response->getGraphNode();
/* handle the result */
/* make the API call */
FB.api(
    "/{FEED_ID}/uploads",
    "POST",
    {
        "file": "@catalog.csv;type=text\/csv"
    },
    function (response) {
      if (response && !response.error) {
        /* handle the result */
      }
    }
);

Formatos compatíveis

Todos os formatos de resposta e solicitação são iguais aos documentados para o ponto de extremidade original.

Consulte os campos compatíveis com o catálogo de serviços com hora marcada.

Método pull

Não recomendamos usar este método porque ele ocasiona inventários obsoletos até pulls subsequentes. No entanto, ele é útil para empresas menores com hospedagem própria e um arquivo de inventário que pode ser acessado publicamente. Se você escolher usar esse método, será preciso especificar o recurso catalog_feed_scheduled na configuração da empresa por meio do Login de Empresa. Quando isso estiver definido, buscaremos o inventário da empresa na URL pública especificada com regularidade, independentemente de atualizações.

Saiba mais sobre o pull de feed agendado.