FBEクリエイティブオンボーディング

Facebook Business Extension (FBE)を使用すると、新規または既存のビジネスマネージャと接続することにより、Metaが提供するアプリ全体にわたって簡単にクリエイティブアセットをアップロードすることができます。このフローの完了後に返されるビジネスマネージャを使用すれば、パートナーがクライアントに代わってクリエイティブアセットをFacebookにアップロードすることが可能です。

このドキュメントでは、FBEクリエイティブフローの主要な前提条件と、プロセスを完了するために必要な手順について説明します。統合全体の詳細については、「Facebook Business Extensionガイド」をご覧ください。

例: パートナーサーフェス(ビジネスログイン)からのオンボーディングフロー

開始する前に

  1. Facebook開発者として登録します。これにより、Facebookの開発者ツールにアクセスして、Facebookアプリを作成できるようになります。

  2. Metaアプリを作成します(まだ作成していない場合)。

  3. Metaアプリは、認証済みビジネスであるビジネスマネージャが所有するアプリでなければなりません。詳しくは、ビジネスの認証方法をご覧ください。

  4. テストアプリを作成し、それを使用してすべての新しい開発とテストを実施します。テストアプリには別のビジネスマネージャを割り当てるようにしてください。

  5. プライベート権限/機能:

  • manage_business_extension — Facebook Business Extensionへのアクセス。この機能がアプリに対して発行されると、[製品]の下にFBE開発者パネルが表示されます。

  • Business_creative_asset_managementクリエイティブ関連のアセット管理APIへのアクセス。この機能を付与されると、次の権限を使用できるようになります。

    • business_creative_insights: ビジネスクリエイティブアセットインサイトにアクセスします。

    • business_creative_management: 自分のビジネスエンティティのコンテキスト内で、新しいフォルダーの作成、編集、共有、およびフォルダーへのアセットのアップロードを可能にします。

    • business_creative_insights_share (開発中): フォルダー共有フローで使用される任意の権限です。ユーザーからこの権限を付与されると、アプリはクリエイティブフォルダーを他のビジネスと共有することができ、クリエイティブアセットのインサイトを他のビジネスが閲覧できるようになります。

アプリのレビューが完了したら

パートナーアクセストークンを生成します。

  • 以下の手順に従って、ビジネスマネージャの下に管理者システムユーザーアクセストークンを生成します。

  • このトークンの「利用可能なスコープ」ステップで、business_creative_insightsbusiness_creative_managementbusiness_managementの権限が選択されていることを確認してください。

[マイデザインをFacebookに送信]ボタンの実装

このボタンは、アプリからユーザーのFacebookメディアライブラリにアセットを送信するために使用されます。このプロセスにおいて、アプリはユーザーがアセットの送信先フォルダーを選択または作成できるようにする必要があります。

これには以下の2つの方法をおすすめします。

1. (最小設定)トップレベルフォルダーを選択または作成するオプションのみをユーザーに提供する。選択したビジネスコンテキスト内で、ユーザーがアクセスできるすべてのトップレベルフォルダーを照会します。ユーザーに、既存のトップレベルフォルダーを選択するか、新しいフォルダーを作成するよう求めます。ユーザーは、フォルダー名を指定するか、デフォルトのフォルダー名<YourBusinessName>_<UserBusinessName>_<UserName>を使用することができます。選択、あるいは新規作成したトップレベルフォルダーにアセットをアップロードします。この方法では、必要なUI作業を最小限に抑えられます。APIの詳細は、以下のステップ3をご覧ください。

2. (任意) ユーザーに、フォルダーとサブフォルダーのナビゲーションに関する全権限を付与する。選択したビジネスコンテキスト内で、ユーザーがアクセスできるすべてのトップレベルフォルダーを照会し、既存のトップレベルフォルダーを選択するか、新しいフォルダーを作成するようユーザーに求めます。新しいフォルダーの場合は、自分でフォルダー名を決めるか、デフォルトの名前<YourBusinessName>_<UserBusinessName>_<UserName>を使用するようユーザーに求めます。選択したトップレベルフォルダー内では、既存のサブフォルダーへの移動、サブフォルダーの新規作成、またはアセットのアップロードのどれかを選ぶことができます。このオプションでは、UIにフォルダーナビゲーションを実装する必要があります。API統合の手順は、以下のステップ3ステップ4をご覧ください。

このフローを実装するために必要な具体的な手順は、以下のとおりです。

  1. Facebook Business拡張機能の実装
  2. ビジネスコンテキストの取得
  3. トップレベルフォルダーの選択または作成
  4. サブフォルダーの選択または作成
  5. 画像や動画のアップロード
  6. フォルダーの共有リクエスト(任意)
  7. 画像や動画のインサイトを見る(任意)

1.Facebook Business拡張機能の実装

ユーザーがクリエイティブアセットを初めてFacebookに送信する際には、Facebook Business拡張機能でユーザーに認証を求め、必要な権限とアセットへのアクセス権をアクセストークンの形でアプリに付与して、Facebook上のデータにアクセスできるようにする必要があります。Facebook Business拡張機能をアプリに実装するには、「Facebook Business拡張機能: 作業を始める」をご覧ください。ビジネスアプリガイドに従って、アプリがビジネスアプリで表示されるようにします。

クリエイティブフローのプロンプトを以下のように設定します。

  • 設定の下で、channel: CREATIVEbusiness_vertical: CREATIVEを渡します。
  • business_creative_managementbusiness_creative_insightsの権限を使用します。
    • ビジネスIDの照会、フォルダーの作成、クリエイティブアセットのフォルダーへのアップロードに必要です。
  • (任意) business_creative_insights_share権限を使用します。
    • ユーザーがVIEW_INSIGHTSタスク権限が設定されたフォルダーを共有できるようになります。

このプロンプトから返されたユーザーアクセストークンを使用して、ユーザーの代わりにAPI呼び出しを行うことができます。

必須の構成

Extras

フィールド説明

setup

setup

必須

販売者のFacebookセットアップ。一意の識別情報(external_business_id)やカタログの通貨(currency)など。setupオブジェクトの詳細をご覧ください。

business_config

business_config

必須

Facebook Business ExtensionがFacebook Business Extensionワークフローを構成するために使用する構成オブジェクト。business_configオブジェクトの詳細をご覧ください。

repeat

ブーリアン

必須

この値はfalseに設定します。

設定

このオブジェクトを使用して、エンドユーザーのFacebookプレゼンスの設定を定義します。

フィールド説明

external_business_id
型: 文字列

必須。
クライアントのビジネスを表す一意のビジネスID。Facebookはこれを一意の識別情報として使用します。例えば、販売者の会社名が「Fubar」である場合、「fubar-123」がexternal_business_idになります。

timezone
型: 文字列

必須。
ビジネスの所在地のタイムゾーン。使用可能なタイムゾーン値をご覧ください。

currency
型: 文字列

必須。
ビジネスのカタログアイテムで使われるデフォルト通貨の3文字のISO通貨コードサポートされる通貨コードをご覧ください。

business_vertical
型: 列挙値

必須。
ビジネスに関連付けられているバーティカル
値:CREATIVE

channel
型: 列挙値

必須。
追加の手順または制約が必要となる機能に関して、パートナーがユーザーに意図を伝える手段を提供します。値: CREATIVE

  • CREATIVE — ユーザーがパートナーのプラットフォームでクリエイティブを作成し、それをユーザーのビジネスマネージャに共有することができるフロー。

business_manager_id
型: 文字列

任意。
セットアップフローでパートナーがユーザーへの事前選択のために入力できる、ユーザーの既存のビジネスマネージャのビジネスマネージャID。

ビジネス構成

このオブジェクトを使用して、エンドユーザーのビジネス設定を構成します。これにはCTAやサービスカードなどが含まれます。各フィールドにある「型」は、下記の対応する表にリンクしています。

フィールド説明

business
型: FBEBusinessPropertiesConfigData

必須。
エンドユーザーのビジネスに関する情報。

FBEBusinessPropertiesConfigData

このオブジェクトを使用してビジネスの名前を構成します。

フィールド説明

name
型: 文字列

必須。
ビジネスの名前

2.ビジネスコンテキストの取得

ユーザーが上記のFBEオンボーディングフローを終えると、FBEインストールAPIまたはWebhook通知のいずれかから、ユーザーのビジネスマネージャIDとアクセストークンが送られます。

3.トップレベルフォルダーの選択または作成

ユーザーは、トップレベルフォルダーにアセットをアップロードしたり、トップレベルフォルダーの下にサブフォルダーを作成したりすることができます。

まず、<business_id>/creative_foldersエンドポイント(開発中)にリクエストを行うことで、ユーザーがCREATE_CONTENTタスクに関して権限を持っているトップレベルフォルダーを確認します。

ユーザーのビジネスからのトップレベルフォルダーの取得

リクエスト

curl -X GET \
    -F 'access_token={user-access-token}' \
https://graph.facebook.com/<API_VERSION>/<user_business_id>/creative_folders?filtering=[{field:"permitted_tasks", operator: "EQUAL", value:"create_content"}]

応答

{
 "id": "<folder_id>"
}

ユーザーのビジネスマネージャのコンテキスト内で、既存のトップレベルフォルダーを選択するか、新しいトップレベルフォルダーを作成するようユーザーに求めます。新しいトップレベルフォルダーの場合は、自分でフォルダー名を決めるか、デフォルトで<YourBusinessName>_<UserBusinessName>_<UserName>を使用することができます。ユーザーがフォルダーを共有した場合、このフォルダーがFacebookアセットライブラリで自分のビジネスとユーザーのビジネスの両方に表示されます。

: ユーザーのビジネス名は、{business-id}エンドポイントにGETリクエストを行うことで取得できます。{business-id}はユーザーのビジネスIDです。

ユーザーのビジネス情報を取得するリクエスト

リクエスト

curl -X GET \
    -F 'access_token={user-access-token}' \
    https://graph.facebook.com/<API_VERSION>/<BUSINESS_ID>

応答

{
 "id": {business-id}
 "name": {user-business-name}
}

トップレベルフォルダーを作成するリクエスト

リクエスト

curl -X POST \
    -F "name={folder_name}"
    -F "description={description}"
    -F 'access_token={user-access-token}' \
    https://graph.facebook.com/<API_VERSION>/<BUSINESS_ID>/creative_folders

応答

{
 "id": {top-level-folder-id}
}

4.サブフォルダーの選択または作成

完全なフォルダーナビゲーションフローをサポートしたい場合は、以下のリクエストで、トップレベルフォルダーの下で既存のサブフォルダーを選択するか、新しいサブフォルダーを作成するようユーザーに求めます。

サブフォルダーの取得

  • business_creative_management権限が必要

リクエスト

curl -X GET \
    -F 'access_token={user-access-token}' \
    https://graph.facebook.com/<API_VERSION>/<parent_folder_id>/subfolders?fields=name

応答

{
 "data": [
   {
     "name": "<subfolder_name>",
     "id": "<subfolder_id>"
   }
 ]
}

サブフォルダーの作成

  • business_creative_management権限が必要

リクエスト

curl -X POST \
    -F "name={folder_name}"
    -F "description={description}"
    -F "parent_folder_id={parent-folder-id}"
    -F 'access_token={user-access-token}' \
 https://graph.facebook.com/<API_VERSION>/<BUSINESS_ID>/creative_folders

応答

{
    "id": {sub-folder-id}
}

<folder_id>または<subfolder_id>エンドポイントにDELETEリクエストを送信することで、フォルダーとサブフォルダーを削除することができます。

5.サブフォルダーへの画像や動画のアップロード

ユーザーのクリエイティブアセットをサブフォルダーにアップロードします。

  • business_creative_management権限が必要

画像のアップロード

リクエスト

curl -X POST \
    -F 'bytes={image-content-in-bytes-format}' \
    -F 'name={image-name}' \
    -F 'access_token={user-access-token}' \
    -F 'creative_folder_id={subfolder-id}' \
    https://graph.facebook.com/{version}/{business-id}/images

応答

{
    "images":{
         "{image-name}":{
             "id":"{business-creative-image-id}",
             "hash":"{hash}",
             "url":"{image-url}"
         }
    }
}

動画のアップロード

数メガバイト以下の動画は1回のリクエストでアップロードし、それ以外は分割してアップロードします(次のセクションをご覧ください)。動画アップロードのAPI呼び出しは、graph.facebook.comではなく、graph-video.facebook.comで行います。

例 — {business-id}/videoPOSTを送信し、動画の名前、ソース、サブフォルダーIDを含めます。

リクエスト

curl -X POST \
    -F 'name={video-name}' \
    -F 'source='&#064;&#123;video-path&#125;'' \
    -F 'access_token={user-access-token}' \
    -F 'creative_folder_id={subfolder-id}' \
    https://graph-video.facebook.com/{version}/{business-id}/videos

応答

{
  "success": true,
  "business_video_id": "<business_video_id>"
}

動画の分割アップロード

大きなサイズの動画をアップロードする場合は、1つの開始リクエスト、1つまたは複数の転送リクエスト、1つの終了リクエストを送信します。

開始リクエストを行い、ビデオのアップロードセッションを作成するには、/{business-id}/videosPOSTリクエストを送信し、upload_phaseフィールドをstartに設定して、file_sizeにバイト数を指定します。

リクエスト

curl -X POST \
 -F 'title={video-name}' \
 -F 'creative_folder_id={subfolder-id}' \
 -F 'access_token={user-access-token}' \
 -F 'upload_phase=start' \
 -F 'file_size={video_file_size_in_bytes}' \
 https://graph-video.facebook.com/<API_VERSION>/<BUSINESS_ID>/videos

応答

{
    "upload_session_id": "{session-id}",
    "video_id": "{video-id}",
    "start_offset": "0",
    "end_offset": "52428800"
}

動画の[0, 52428800]をアップロードするには、開始オフセットと終了オフセットに従ってファイルをチャンクに分割してから、転送リクエストでそれぞれのチャンクを送信します。Facebookからチャンクごとに新しいオフセットが送信されるので、この新しいオフセットを使用して各チャンクをアップロードしてください。

例: 最初のチャンクの送信

リクエスト

curl -X POST \
    -F 'title={video-name}' \
    -F 'access_token={user-access-token}' \
    -F 'creative_folder_id={subfolder-id}' \
    -F 'upload_phase=transfer' \
    -F 'upload_session_id={session-id}' \
    -F 'start_offset=0' \
    -F 'video_file_chunk=@{binary-chunk-filename}' \
    https://graph-video.facebook.com/<API_VERSION>/<BUSINESS_ID>/videos

応答

成功した場合、Facebookが次のチャンクのオフセットを応答で返します。

{
  "start_offset": "52428800", //Start byte position of the next file chunk
  "end_offset": "104857601" //End byte position of the next file chunk
}

範囲が[52428800, 104857601]の2番目のチャンクをファイルから切り取ってアップロードし、送信します。

リクエスト

curl -X POST \
    -F 'title={video-name}' \
    -F 'access_token={user-access-token}' \
    -F 'creative_folder_id={subfolder-id}' \
    -F 'upload_phase=transfer' \
    -F 'start_offset=52428801' \
    -F 'upload_session_id={your-upload-sesson-id}' \
    -F 'video_file_chunk={binary-chunk-filename}' \
    https://graph-video.facebook.com/<API_VERSION>/<BUSINESS_ID>/videos

応答

start_offsetend_offsetが等しくなるまで、追加のチャンクをすべて送信します。

{
 "start_offset": "152043520",
 "end_offset": "152043520"
}

上記の応答は、ファイル全体がアップロードされたことを意味します。次に、この動画を投稿し、アップロードセッションを閉じる必要があります。

リクエスト

curl -X POST \
    -F 'title={video-name}' \
    -F 'access_token={user-access-token}' \
    -F 'creative_folder_id={business-creative-folder-id}' \
    -F 'upload_phase=finish' \
    -F 'upload_session_id={session-id}' \
    https://graph-video.facebook.com/<API_VERSION>/<BUSINESS_ID>/videos

アップロード中にエラーが発生した場合、そのチャンクのアップロードを再試行することができます。通常、エラーは応答の問題に起因します。失敗したチャンクのアップロードを再試行してください。エラーについて詳しくは、次をご覧ください。

アプリは、アップロードが成功したことをユーザーに通知し、[Facebookアセットライブラリでクリエイティブを表示]コールトゥアクションの後ろに、このクリエイティブへのディープリンクを提示します。フォルダーまたはアセットのディープリンクは次のとおりです。

https://business.facebook.com/asset_library/business_creatives/?object_id={asset_id or folder id} (開発中)

ユーザーが複数のビジネスマネージャを持っている場合、このリンクによりビジネス選択ページが開きます。ビジネスの曖昧さを取り除くため、以下のようにURL内にビジネスコンテキストを含めることができます。

https://business.facebook.com/asset_library/business_creatives/?object_id={asset_id or folder id}&business_id={client_business_id}

ディープリンクのURLは、エンドポイントでGETリクエストをすることでも取得できます。

curl -X GET \
    /<folder_id or asset_id>
        ?fields=['media_library_url']
        &access_token=<user_access_token>

このリンクによって、ユーザーはFacebookのアセットライブラリにあるフォルダーやアセットに直接アクセスできます。

6.フォルダーの共有リクエスト(任意)

フォルダーを管理したり、アセットのインサイトを見ることができるようにするため、トップレベルフォルダーの共有をリクエストできます。{business-creative-folder-id}/agenciesPOSTリクエストを送信し、permitted_tasksCREATE_CONTENTに割り当てます。

: ユーザーがアプリにbusiness_creative_insights_shareを付与している場合は、VIEW_INSIGHTSの許可タスクを割り当てることもできます(開発中)。

フォルダーの共有

  • business_creative_management権限が必要

リクエスト

curl -X POST \
    -F 'permitted_tasks=['CREATE_CONTENT','VIEW_INSIGHTS']' \
    -F 'business={partner-business-id} ' \
    -F 'access_token={user-access-token}' https://graph.facebook.com/<API_VERSION>/<BUSINESS_CREATIVE_FOLDER_ID>/agencies

応答は、ユーザーのビジネス組織における役割に応じて、2つのタイプのいずれかになります。

1) クライアントトークンがビジネス管理者を表す場合:

APIは、ユーザービジネスとクライアントビジネスの間にパートナーシップ契約を確立します。

応答

ユーザービジネスとお客様のビジネスの間にパートナーシップ契約が確立されている場合(ユーザービジネスからフォルダーが共有され、共有リクエストを受け入れている場合):

{ 
    "success": true
}

ユーザービジネスからの共有リクエストをまだ受け入れていない場合:

{
    "success": true,
    "share_status": "In Progress"
}

このシナリオでは、共有によって有効になるすべての機能(表示、作成など)にアクセスできるようになる前に、ユーザービジネスからの共有リクエストを受け入れる必要があります。

承認待ちのパートナーシップ契約を一覧表示するには、パートナーアクセストークンを使用して{business-id}/received_sharing_agreementsにリクエストを送信し、request_statusIN_PROGRESSに設定します。このアクションには、business_creative_managementおよびbusiness_managementの権限が必要です。

パートナーシップ契約をすべて表示

リクエスト

curl -i -X GET https://graph.facebook.com/<API_VERSION>/<PARTNER_BUSINESS_ID>/received_sharing_agreements
    ?request_status=IN_PROGRESS
    &access_token={partner-access-token}"

business_sharing_agreement_request_idPOSTを送信し、request_statusAPPROVEに設定することで、共有リクエストを受け入れることができます。これは、自分のビジネスに対して、誰かが初めてフォルダーを共有した時にのみ実行する必要があります。このアクションにはbusiness_management権限が必要です。

パートナー契約の受け入れ

リクエスト

curl -X POST \
    -F 'request_status=APPROVE' \
    -F 'access_token={partner-access-token}' \
https://graph.facebook.com/<API_VERSION>/<BUSINESS_SHARING_AGREEMENT_REQUEST_ID>

応答

{ 
    "success": true
}

また、保留中の共有リクエストをビジネスマネージャUIで承認することもできます。ビジネスマネージャで保留中のリクエストを見るには、[設定] > [リクエスト] > [受け取ったリクエスト]から、リクエストの詳細情報を確認できます。


2) クライアントトークンがビジネスの社員を表す場合:

APIは、ビジネス管理者に対してリクエスト承認を求めるメール通知を送信するため、通知ワークフローをトリガーします。

応答

{
   "success": true,
   "share_status": "Pending"
}

これに対応して、アプリはユーザーに次のことを通知します。

  • 共有リクエストを承認するために、ビジネス管理者にメールでリクエストが送信されたこと
  • リクエストに関する別のメールがユーザーに送信されたこと

ユーザーのビジネスで開始された保留中の契約をすべて表示するには、{business-id}/attempted_sharing_agreementsにリクエストを送信し、request_statusIN_PROGRESSに設定し、requesting_business_idをユーザーのビジネスマネージャIDに設定します。このアクションには、business_creative_managementおよびbusiness_managementの権限が必要です。

保留中のフォルダー共有契約をすべて表示

リクエスト

curl -i -X GET \ https://graph.facebook.com/<API_VERSION>/<PARTNER_BUSINESS_ID>/attempted_sharing_agreements
    ?request_status=IN_PROGRESS
    &requesting_business_id=<user_business_id>
    &access_token={partner-access-token}

リクエストIDを持つ保留中のフォルダー共有契約をすべて表示

また、リクエストIDがわかっている場合は、{request_id}にリクエストを送信することで、ステータスを直接取得することができます。

  • business_creative_management権限が必要

リクエスト

curl -i -X GET  \
    https://graph.facebook.com/<API_VERSION>/<REQUEST_ID>?fields=status

ビジネス管理者がリクエストを承認すると、ステータスがAPPROVEに変わり、ユーザーのビジネスと自分のビジネスが共有契約の関係を確立している場合(ユーザービジネスからフォルダーが共有され、共有リクエストを受け入れた場合)は、フォルダーが自分のビジネスマネージャに共有されます。それ以外の場合は、share_statusIN_PROGRESSに更新されます。IN_PROGRESSステータスのパートナーシップ契約をすべて表示し、APIまたはビジネスマネージャUIで受け入れることができます。

7.画像や動画のインサイトを見る(任意)

VIEW_INSIGHTSタスクの権限とともに、フォルダーがユーザーから共有されている場合、<business_asset_id>/insightsエンドポイントにGETリクエストを行うことで、共有フォルダー内のビジネス画像や動画のインサイトを読むことができます。

ビジネスクリエイティブのインサイト

  • business_creative_managementbusiness_creative_insightsの権限が必要

リクエスト

curl -i -X GET  \
https://graph.facebook.com/<API_VERSION>/<BUSINESS_ASSET_ID>/insights
    ?breakdowns=["age","gender"]
    &fields=impressions,inline_link_clicks,age,gender,date_start,
    &time_range={"since":"2019-08-01","until":"2019-08-22"}
    &access_token={partner-access-token}"

応答

{
 "data": [
   {
     "impressions": 99,
     "inline_link_clicks": 1,
     "age": "18-24",
     "gender": "female",
     "date_start": "2019-08-01",
     "date_end": "2019-08-22"    },
   {
     "impressions": 198,
     "inline_link_clicks": 2,
     "age": "18-24",
     "gender": "male",
     "date_start": "2019-08-01",
     "date_end": "2019-08-22"    },
   {
     "impressions": 464,
     "inline_link_clicks": 2,
     "age": "25-34",
     "gender": "female",
     "date_start": "2019-08-01",
     "date_end": "2019-08-22"    },
 ]
}

内訳項目は以下のとおりです。

  • gender
  • age
  • country
  • publisher_platform
  • platform_position
  • device_platform
  • ad_id
  • objective
  • optimization_goal
  • time_range (「YYYY-MM-DD」形式の日付が必要です。その日の午前0時開始を意味します。)

パートナートークンを直接使用した共有フォルダーの管理

マネージドサービスパートナーの場合、パートナーアクセストークンを使ってトップレベルフォルダーを管理できます。その際、フォルダーが共有されていて、以下に対する適切な許可タスクが与えられていることが必要です。

  • フォルダーへのCREATE_CONTENTタスク権限。これにより、アプリがサブフォルダーを作成し、画像や動画をそこにアップロードすることができます。
  • (ユーザー任意) VIEW_INSIGHTSタスク権限。アプリはこの権限を使用して、フォルダーに保存されているクリエイティブアセットのパフォーマンスインサイトを表示します。

1.親フォルダーの権限の確認

<business_id>/creative_foldersエンドポイントを呼び出して、ユーザーのビジネスの下で共有されているすべての親フォルダーを取得します。

  • business_creative_management権限が必要

ユーザーのビジネスからのフォルダーの取得

リクエスト

curl -X GET \
     -F 'access_token={partner-access-token}' \  https://graph.facebook.com/<API_VERSION>/<partner_business_id>/creative_folders?filtering=[{field:"owner_business_id", operator:"EQUAL", value:"user_business_id"}]

応答

{ 
    "data": [
       { 
            "id": "<shared_folder_id>" 
       }
    ]
}

フォルダーに対する許可タスクの取得

リクエスト

curl -X GET \
 -F 'access_token={partner-access-token}' \
 https://graph.facebook.com/<API_VERSION>/<folder_id>/agencies

応答

{
 "data": [
   {
     "id": "<partner_business_id>",
     "name": "<partner business name>",
     "permitted_tasks": [
       "VIEW_INSIGHTS",
       "VIEW_CONTENT",
       "CREATE_CONTENT",
       "MANAGE_CONTENT",
       "MANAGE_PERMISSIONS"]
   }
 ],
}
  • 共有フォルダーに画像や動画をアップロードするには、CREATE_CONTENTタスク権限が必要です。
  • VIEW_INSIGHTSタスク権限は、共有フォルダー内の画像やビデオのクリエイティブインサイトを照会するために必要です。

2.親フォルダー内にサブフォルダーを作成

親フォルダーにCREATE_CONTENTタスク権限があれば、共有フォルダー内にサブフォルダーを作成することができます。

  • business_creative_management権限が必要

サブフォルダーの作成

リクエスト

curl -X POST \
    -F "name={folder_name}"
    -F "description={description}"
    -F "parent_folder_id={parent-folder-id}"
    -F 'access_token={partner-access-token}' \
 https://graph.facebook.com/<API_VERSION>/<BUSINESS_ID>/creative_folders

応答

{
 "id": {subfolder-id}
}

3.サブフォルダーへの画像や動画のアップロード

ステップ5にあるのと同じステップに従います。パートナートークンを使用してサブフォルダーに画像と動画をアップロードします。

画像や動画のFacebookアセットIDのトラッキング

アプリが画像や動画をFacebookのアセットライブラリにアップロードすると、FacebookのAPIはそのアセットIDを返します。

継続的な使用を可能にするために、アプリでは、アプリ内で画像や動画を作成したプロジェクトやワークスペースに対してアセットIDをトラッキングする必要があります。

これにより、例えば次のように、将来的にサポートされる予定の「編集」や「更新」のユースケースを簡素化することができます。

  • アプリのユーザーが、Facebookに公開され広告に使用された後も、アセットの編集を続ける場合。画像や動画の更新版がアップロードされる際にアプリが元のアセットIDを送信する場合、ユーザーには簡素化された「更新」または「スプリットテストの実行」フローが表示されます。
  • Facebook広告のインサイトパネルにいるユーザーが、クリエイティブを「編集」する場合。これには画像や動画の編集も含まれ、ユーザーはアセットIDを指定してアプリにアクセスします。これを受けて、アプリはこのアセットを作成したプロジェクトを開くことができ、ユーザーは前回中断した場所から再開できます。

アセット、広告の作成アクション、投稿アクションへのディープリンクURLの提供

アセットに対するディープリンクURL

  • アップロードされた画像/動画アセットのmedia_library_urlフィールドを照会

リクエスト

curl -X GET \
    -F 'access_token={partner-access-token}' \
https://graph.facebook.com/<API_VERSION>/<asset_id>?fields=media_library_url

広告の作成アクションとページ投稿アクションに対するディープリンクURL

  • 上記手順のディープリンクの末尾に、&action=CREATE_ADまたは&action=CREATE_POSTを追加します。

例:

https://business.facebook.com/asset_library/business_creatives/?object_id=2838437832929622&action=CREATE_AD

次のステップ