アセットIDとアクセストークンを取得する

ユーザーがFacebook Business拡張機能をインストールした後、(そのユーザーのためにAPI呼び出しをするために使う)ユーザーアクセストークンを入手したら、関連機能を構成するために、ピクセルID、InstagramビジネスID、ページID、ビジネスマネージャID、広告アカウントID、カタログID (任意)、またはアクセストークンをそのユーザーから取得する必要があります。これらのIDは、APIエンドポイントとビジネス構成で使われます。

OBOソリューションを使えば、クライアントは、クライアントのビジネスマネージャの管理者のアクセストークンだけでなく、パートナービジネスマネージャの管理システムユーザーのアクセストークンを使ってアクセストークンを取得することもできます。

APIエンドポイントとビジネス構成のためのIDを収集する

この情報を取得する方法は次のとおりです。

システムユーザーの作成

ユーザーがFBEをインストールすると、FBEによってクライアントのビジネスマネージャに従業員システムユーザーが生成されます。この新しいシステムユーザーは、{App Name} System User (FBE)スキーマに従って命名されます。

システムユーザーとは、ビジネスマネージャが所有または管理するアセットにAPI呼び出しをするサーバーまたはソフトウェアです。

このシステムユーザーには、以下のタスクアクセス許可が付与された関連するすべてのFBEアセットに対するアクセス許可が付与されています。

  1. ページ: 'MANAGE'
  2. 広告アカウント: 'MANAGE'
  3. カタログ: 'MANAGE'
  4. ピクセル: 'EDIT'

APIを通じてシステムユーザートークンを取得する

FBEインストール後にWebhookまたはビジネスログインを介してユーザーアクセストークンを受け取った場合は、同じトークンを使ってビジネスマネージャのシステムユーザーアクセストークンを取得できます。そのためには、次のAPI呼び出しを実行します。

curl -X POST \
  -F 'app_id={app_id}' \
  -F 'scope={permissions}' \ 
  -F 'access_token={access_token}' \
  -F 'fbe_external_business_id={fbe_external_business_id}' \
  https://graph.facebook.com/<API_VERSION>/<client_business_manager_id>/access_token

scopeフィールドにはmanage_business_extensionアクセス許可を使いますが、用途によってはads_managementcatalog_managementも必要になることがあります。

access_tokenフィールドには、ユーザーアクセストークン(user_access_token)か、またはパートナービジネスの管理システムユーザーアクセストークン(partner_bm_admin_system_user_token)を渡すことができます。ビジネスアクセストークンについて詳細をご確認ください。

Webhookからのtoken_typeフィールドは、受信したaccess_tokenがユーザーアクセストークンなのかそれともシステムユーザーアクセストークンなのかを示します。

ユーザーがInstagram経由でFBEをインストールしている場合、Webhookからクライアントビジネスマネージャで生成されたシステムユーザーのトークンが返されるため、このAPIを呼び出す必要はありません。

Webhook

FBEのインストール、アンインストール、再構成に関する最新情報を速やかに受け取るようにするため、1つのビジネスがFBEをインストールしたり変更を加えたりアンインストールしたりするたびにWebhookイベントが起動されます。

ユーザーがFBEをインストールしたり変更を加えたりするたびに、アプリではWebhook設定を調べて、ユーザーが変更を加えたり追加したりアプリとの接続から削除したりした対象アセットがどれかを把握するようにしてください。アプリの動作は、最後に関連させたアセットに基づいて更新するというものになるようにしてください。

設定要件

  1. セキュアサーバーにFacebookからの次のリクエストを処理できるエンドポイントを作成すること: 認証リクエスト(GET)とイベント通知(POST)。
  2. アプリダッシュボードでFBE Webhooksサブスクリプションを設定すること。
    • アプリダッシュボードの[Facebook Business拡張機能]セクションで[設定]タブに移動し、下にスクロールしてWebhooksカードまで移動した後、[コールバックURLを編集]をクリックします。
    • エンドポイントのURLを[コールバックURL]フィールドに入力し、[トークンを認証]フィールドに文字列を入力します。この文字列は、すべての認証リクエストに含められます。
    • [確認して保存]をクリックすると、エンドポイントに認証リクエストが届くので、必ず確認してください。
    • fbe_install Webhookは自動的にサブスクリプション登録されます。カードには、必要に応じてサブスクリプションを利用解除するために使える切り替えスイッチも備わっています。

Webhookイベントの解析

インストールWebhookが受信されるたびに、アプリでは以下のアクションを実行する必要があります。

新規インストールの場合

  1. アクセストークンとそのタイプを保管し、アプリによるアクセスが認可されたアセットを記録します。
  2. 認可されたアセットに基づいて機能セットを有効にします。
  3. 特定の機能に必要なアセットが欠けている場合は、その機能のみ無効にします。例えば、カタログへのアクセスが認可されているが、ピクセルへのアクセスは認可されていないアプリの場合、ピクセル駆動の機能ではなく、カタログ駆動の機能のみを実装します。
  4. アプリが、アクセス権を付与された対象アセットに基づいてどのように動作するかに関する最新情報をユーザーに通知します。

既存のインストールの場合

  1. アクセストークン、トークンのタイプ、アプリによるアクセスが認可されたアセットを更新します。
  2. どのアセットが認可されているかに基づいて、このビジネスのためにアプリで実装する機能セットを更新します。
  3. アプリが、アクセス権を付与された対象アセットに基づいてどのように動作するかに関する最新情報をユーザーに通知します。

アンインストール時のWebhookの解析

アンインストール時には、以下の手順を実行します。

  1. このビジネスのためにアプリが実装する機能を無効にします。
  2. ビジネスに対して設定の変更を通知します。

Webhookペイロードの内容

応答フィールド

フィールド説明
ad_account_id

型: 文字列

FBE内でユーザーが選んだ広告アカウントID。アプリにads_managementアクセス許可が付与されている場合、この広告アカウントを使用して広告を管理できます。installed_featuresリストの関連アセットをご覧ください。

business_manager_id

型: 文字列

FBEに使用されるビジネスマネージャID。installed_featuresリストの関連アセットをご覧ください。

catalog_id

型: 文字列

FBEでユーザーが選んだカタログID。ユーザーはこのIDを使って商品カタログを管理できます。installed_featuresリストの関連アセットをご覧ください。

fbe_event

型: 文字列

イベント通知がインストールかアンインストールかを示すFBEイベント。installed_featuresリストの関連アセットをご覧ください。

flow

型: 文字列

ユーザーが行ったオンボーディングのフローを示すフロー(例: COMMERCECREATIVEなど)。installed_featuresリストの関連アセットをご覧ください。

commerce_merchant_settings_id

型: 文字列

コマース販売者設定ID。パートナーが選んだFBEコマース販売者設定に関する情報を読み取れるようにするため使用される。installed_featuresリストの関連アセットをご覧ください。

onsite_eligible

型: ブーリアン

コマースオンサイト利用資格。選択したアセットがオンサイトコマースで利用可能かどうかを示します。販売者は、オンサイトのインテントを引き続き保持し、パートナーサイトで返品/配送/支払いを選択する必要があります。installed_featuresリストの関連アセットをご覧ください。

profiles

型: 配列

プロフィールのリスト(FacebookページIDやInstagramビジネスプロフィールID)。これらのIDを使用して、ほかのFacebook統合のグラフAPIリクエストを別途作成します。installed_featuresリストの関連アセットをご覧ください。

pages

型: 配列

FacebookページIDのリスト。これらのIDを使用して、ほかのFacebookページ統合のグラフAPIリクエストを別途作成します。installed_featuresリストの関連アセットをご覧ください。

instagram_profiles

型: 配列

InstagramビジネスプロフィールIDのリスト。これらのIDを使用して、ほかのFacebook/Instagram統合のグラフAPIリクエストを別途作成します。このフィールドが含まれない場合は、Instagram関連のスコープのみになります。例えば、instagram_basicがアクセストークンに含まれていなかったり、FBEで事業者がInstagramビジネスプロフィールにリンクされていなかったりなどです。installed_featuresリストの関連アセットをご覧ください。

pixel_id

型: 文字列

ピクセルイベントを起動するために保存し使用する、このビジネスの一意のピクセルID。installed_featuresリストの関連アセットをご覧ください。

token_type

型: 文字列

トークンのタイプ。受信したaccess_tokenがデフォルトのユーザーアクセストークンなのか、それともシステムユーザーアクセストークンなのかを示します。

installed_features

型: 配列

この事業者がオンボーディングフローで統合/インストールした機能のリスト。最新の機能リストをご覧ください。

feature_instance_id

型: 配列

インストールされている各機能を一意で表すID。将来、特定のインスタンスに修正を加えたりアンインストールしたりするために使用できます。これは機能設定APIおよびWebhookで参照されるfeature_instance_idと同じです。

feature_type

型: 文字列

インストールされている機能のタイプ。機能リストの表には、利用可能な機能セット全体が含まれています。追跡する必要があるのは有効にした機能だけです。

connected_assets

型: 配列

各機能に固有のアセットおよび各機能に関連するアセットのリスト。アセットの説明は、この表の先頭で言及されているものに対応します。

additional_info

型: 配列

リンク済み機能に関する追加情報。


新規インストールのWebhookイベントを受け取ったら、以下のことを行う必要があります。1) business_idからそのpixel_idへのマッピングを維持する。これは、ピクセルIDがそのビジネスにおいてユニークであり、標準のピクセルイベントを起動するために使う必要があるからです。2) カタログプッシュAPIの1つ(有効になっている場合)を使って、そのビジネスのインベントリーを更新する。


例 — ブーリアン型のonsite_commerce_eligibleフィールドによるペイロード

{
  "data": [{
    "ad_account_id": "<ad_account_id>",
    "business_manager_id": "<business_manager_id>",
    "catalog_id": "<catalog_id>",
    "commerce_merchant_settings_id": "<commerce_merchant_settings_id>",
    "onsite_eligible": true,
    "profiles": [
      "<page_id>",
      "<instagram_profile_id>"
    ],
    "pages": [
      "<page_id>"
    ],
    "instagram_profiles": [
      "<instagram_profile_id>"
    ],
    "pixel_id": "<pixel_id>",
    "token_type": "<token_type>",
    "installed_features": [
        {
            "feature_instance_id": "<unique_id>",
            "feature_name" : string, 
            "feature_type": enum,
            "connected_assets": {
                "ad_account_id": "<ad_account_id>",
                "business_manager_id": "<business_manager_id>",
                "catalog_id": "<catalog_id>",
                "commerce_merchant_settings_id": "<commerce_merchant_settings_id>",
                "ig_profile_id": "<instagram_profile_id>"               
                "page_id": "<page_id>",
                "pixel_id": "<pixel_id>",
            },
            "additional_info": {
                            "onsite_commerce_eligible": bool
                        },
                        {
                        "shop_status": array
                        },
                        {
                        "shop_status_info": array
                        }
                }
         ]
    }]
}

FBEインストールAPI

FBEをインストールしたビジネスでは、以下のエンドポイントを使って、基本的なインストール情報(pixel_idと、IG Business ID and/or Page IDを含むプロフィールのリスト)をクエリできます。

CURL -X GET 'https://graph.facebook.com/<API_VERSION>/fbe_business/fbe_installs?fbe_external_business_id=<fbe_external_business_id>&access_token=<access_token>'

応答

{
  "data": [{
    "token_type": "<token_type>"
    "installed_features": [
        {
            "feature_instance_id": "<unique_id>",
            “feature_name” : string, 
            "feature_type": enum,
            "connected_assets": {
                “ad_account_id”: "<ad_account_id>",
                “business_manager_id”: "<business_manager_id>",
                “catalog_id”: "<catalog_id>",
                “commerce_merchant_settings_id”: "<commerce_merchant_settings_id>",
                “ig_profile_id”: "<instagram_profile_id>"               
                "page_id": "<page_id>",
                "pixel_id": "<pixel_id>",
            },
            "additional_info": {
                            "onsite_commerce_eligible": bool
                        },
                        {
                        "shop_status": array
                        },
                        {
                        "shop_status_info": array
                        }
                }
         ]
    }]
}

応答には次のフィールドが含まれます。現在これらが、installed_featuresリストの関連アセットについての信頼できる情報源となります。

フィールド説明

token_type

型: 文字列

受信したaccess_tokenがデフォルトのユーザーアクセストークンなのか、それともシステムユーザーアクセストークンなのかを示すトークンタイプ。

installed_features

型: 配列

このビジネスがオンボーディングフローで統合/インストールした機能のリスト。

feature_instance_id

型: 文字列

インストールされている各機能を表すユニークID。将来、特定のインスタンスに修正を加えたりアンインストールしたりするために使用できます。これは機能設定APIとWebhookで参照されるfeature_instance_idと同じです。

feature_name

型: 文字列

ユニークな機能の名前。

feature_type

型: 文字列

インストールされている機能のタイプ。トラッキングする必要があるのは有効にしたものだけです。

connected_assets

型: 配列

各機能に固有のアセットのリスト。

additional_info

型: 文字列

ショップが今後の変更の影響を受けるかどうかを示すshop_statusshop_status_infoなど、接続済みの機能に関する追加情報。shop_statusの値は "inactive_other"、"inactive_offsite"、"active"、または "no_longer_available" となります。

"Active" は、ショップが表示されていることを示します。"Inactive_offsite" は、オンサイトチェックアウトを使用していないためにショップが表示されていないことを示します。"Inactive_other" は、チェックアウトスタイルと無関係な理由のためにショップが表示されていないことを示します。"No_longer_available" は、このショップが米国または重要なマーケットにもないため、利用できなくなったことを示します。

機能設定APIの応答


モデルには、各機能の機能インスタンスID、およびビジネスによってインストールされたそのタイプの全機能から成る配列で構成されるフィールド(複数ページCTAなど)が含まれます。

カスタマイズできない機能の場合、表示されるのは、機能インスタンスIDと有効化されているフラグだけです。POSTリクエストで更新できるのは、カスタマイズ可能な機能のみです。

このモデルはFBEインストールAPIとは異なり、関連アセットだけではなく、有効化ステータスや特定の機能カスタマイズ設定など、追加の機能情報を提供します。FBEインストールAPIを呼び出した後、機能の有効化ステータスまたは設定についてさらに情報が必要な場合は、このAPIを使用します。

読み取り

次のリクエストにより、任意のビジネスの現在の機能設定ステータスを読み取ることができます。

CURL -X GET 
'https://graph.facebook.com/<API_VERSION>/fbe_business/?fbe_external_business_id=<fbe_external_business_id>&access_token=<access_token>'

更新

すべての機能を更新するには、次のPOSTリクエストを使います。

CURL -i -X POST \   
  -F 'fbe_external_business_id=<fbe_external_business_id>' \
  -F 'business_config={business_config object}' \
  -F 'access_token=<access_token>' 
  "https://graph.facebook.com/<API_VERSION>/fbe_business"

応答

{
  "page_cta": {
     "feature_instance_id": id1,
     "enabled": true,
     "cta_button_text": "Book Now",
     "cta_button_url": "https://partner-site.com/foo-business1",
     "below_button_text": "Powered by FBE Partner"
  },
  "page_ctas": [
    {
        "feature_instance_id": id1,
        "enabled": true,
        "cta_button_text": "Book Now",
        "cta_button_url": "https://partner-site.com/foo-business1",
        "below_button_text": "Powered by FBE Partner"
    },
    {
        "feature_instance_id": id2,
        "enabled": true,
        "cta_button_text": "Book Now",
        "cta_button_url": "https://partner-site.com/foo-business2",
        "below_button_text": "Powered by FBE Partner"
    }
  ],
  “ig_cta”: {...}
  "ig_ctas": [{...}, {...}],
  “ads”: [
    {
      "feature_instance_id": id3,
      “enabled”: true,
    },
    {
      "feature_instance_id": id4,
      “enabled”: true,
    },
  ],
  ...
}