Facebook Business Extension (FBE)では、カタログを使用することにより、ビジネスのインベントリーを取り込みます。取り込んだインベントリーは、ダイナミック広告、ページショップ、おすすめサービスカードなど、さまざまな機能を強化するのに使用されます。統合プロセスにおいてカタログの使用は任意ですが、一部の機能には必須です。
Facebookのカタログには独自のAPIがありますが、FBEにはその中のいくつかが直接統合されており、それにより実際のプラットフォーム上でビジネスのインベントリーを簡単にアップデートすることができます(開発者の側でFacebookカタログIDを管理する必要はありません)。
ダイナミック広告やコマース事例(ページショップ、Instagramショッピング、Marketplace)のためのカタログの中のすべての必須フィールドに正しくデータが設定されるようにするには、サポートフィールドをご覧ください。
Metaは、いずれかのプッシュ方式(バッチAPIまたはワンタイムフィードアップロードAPI)の使用を強く推奨しています。この方式では、インベントリーの即時アップデートが有効になり、双方のサーバー負荷が軽減されるからです。ここで使用されるaccess_token
は、ビジネスログインおよびWebhookから返されるものと同じです。
新しいインストールWebhookを受け取ったら、直ちにビジネスのフルインベントリーをMetaに送信する必要があります。開発者のウェブサイトでビジネスがインベントリーに変更を加えるたびに、開発者はアップデートを送信する必要があります。
ほとんどのEコマースビジネスで推奨されます。バッチAPIは標準のFacebookカタログAPIであり、大規模インベントリー(アイテムが100個以上)を備えたビジネスやアイテムの頻繁なアップデートに適しています。
予約(サービス)ビジネスで利用できます。ワンタイムフィードアップロードAPIは標準のFacebookカタログAPIであり、小規模インベントリー(アイテムが100個以下)のビジネスに適しています。
この方式では、アップデートのたびにフルインベントリーを送信することになります。そうすると、Facebookカタログでインベントリーの完全置換が実行されます。
ステップ1: 接続されたカタログIDを送信して(Webhook通知またはFBEインストールAPIエンドポイントから)、FBEインストールの際に作成されたフィードIDを取得します。
curl -G \ -d "access_token=<ACCESS_TOKEN>" \ https://graph.facebook.com/<API_VERSION>/<CATALOG_ID>/product_feeds
製品フィードAPIの詳細については、こちらをご覧ください。
ステップ2: フィードに対してワンタイムアップロードを実行します。
例 — 公開された場所でホストされているフィードファイル。
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 */
}
}
);
例 — ローカルマシンからフィードファイルを直接アップロードする場合。ファイルのパスは、各自の使用事例に応じて適宜変更する必要があります。
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 */
}
}
);
特に指定がない限り、リクエストと返信のすべてのフォーマットは、元のエンドポイントについて説明されているものと同じです。
バーティカル | CSVフィードの例 | TSVフィードの例 | XMLフィードの例 |
---|---|---|---|
Eコマース | |||
予約 |
「予約(サービス)カタログでサポートされるフィールド」を参照してください。
後続プル実行までにインベントリーの期限切れが誘発されるため、この方式は推奨されません。ただし、公開アクセス可能なインベントリーファイルを備えたセルフホストの小規模ビジネスの場合には、有用です。ビジネスでこの方式を採用した場合、ビジネス構成で、ビジネスログイン経由で渡されるcatalog_feed_scheduled
機能を指定する必要があります。この機能が定義されると、アップデートの有無に関係なく、指定された公開URLからビジネスのインベントリーが定期的に取り出されます。
フィードプルのスケジュールの詳細については、こちらをご覧ください。