目錄

Facebook Business 擴充功能(FBE)會使用目錄來擷取商家的庫存。目錄可用來使各種功能更加完善,例如動態廣告、粉絲專頁商店和精選服務卡等等。儘管整合不一定要建立目錄,但在使用特定功能時會需要目錄。

Facebook 目錄有自己的一套 API,但 FBE 直接整合了其中幾個 API,以便您輕鬆更新平台上的商家庫存(您不需要追蹤自己這端的 Facebook 目錄編號)。

為確保您在使用動態廣告和商務功能(如粉絲專頁商店、Instagram 購物、Marketplace)時,目錄中的所有必要欄位都能正確填入,請參閱支援的欄位

更新庫存

您可透過以下 2 種方法更新庫存:

  • 推送:透過 API 將目錄推送至 Facebook(建議選項)
  • 提取:讓 Facebook 定期從您的平台提取目錄(這種方法會導致庫存過時與不必要的伺服器負載,因此不建議使用)

推送方法

我們強烈建議使用其中一種推送方法(批次 API一次性摘要上傳 API),因為這種方法可以即時更新庫存,並減少兩端的伺服器負載。本文所使用的 access_token商家登入Webhook 傳回的結果相同。

一旦收到新的 Webhook 安裝通知,請務必盡快將商家的完整庫存傳送給我們。此外,每當商家在您的網站上變更庫存時,您就必須傳送更新內容。

批次 API

建議大多數的電子商務類商家使用批次 API 是標準 Facebook 目錄 API,適用於庫存量大(超過 100 項商品)和/或經常更新商品的商家。

一次性摘要上傳 API

適用於預約(服務)類商家。一次性摘要上傳 API 是標準 Facebook 目錄 API,適用於庫存量較少(不超過 100 項商品)的商家。

透過這種方法,您可以隨時在更新時傳送完整的庫存,如此會完整取代 Facebook 目錄中的庫存。

步驟 1:傳送已連結的目錄編號(來自 Webhook 通知或我們的 FBE 安裝 API 端點),以取得 FBE 安裝期間建立的摘要編號:

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

深入瞭解產品摘要 API

步驟 2:執行一次性上傳至摘要:

範例 — 託管於公開位置的摘要檔案。

圖形 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 */
      }
    }
);

範例 — 直接從本機上傳摘要檔案。需根據您的使用案例變更檔案路徑。

圖形 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 */
      }
    }
);

支援的格式

所有要求與回應的格式都與原始端點記錄的格式相同。

請參閱預約(服務)目錄支援欄位

提取方法

這種方法會造成庫存在後續提取前就過時,因此我們不建議使用,但對於擁有可公開存取庫存檔案的小型自行託管商家而言,這個方法相當實用。如果選擇為商家採用這種方法,您需要在透過「商家登入」傳入的「商家配置」中指定 catalog_feed_scheduled 功能。定義完成後,無論是否有任何更新,我們都會定期從指定的公開網址擷取商家庫存。

深入瞭解排定的摘要提取