Bussiness Managerなどで、Instagramアカウントと、対象アプリの連携はしといてください。
まず、InstagramアカウントのIDが必要なので、それを把握する。
Graph API Explorerにアクセス developers.facebook.com
Get Tokenで、 Get User Access Token
をえらび、
ads_management
ads_read
にチェックを入れる
以下のフォーマットに従い、値を埋めて、リクエストURLをつくる。
GET -> <API_VERSION>/<BUSINESS_ID>/instagram_accounts
そうすると、まずIDがわかる。
その上で、 developers.facebook.com に載ってるサンプルコードを参考にクリエイティブを作る。
use FacebookAds\Object\AdCreative; use FacebookAds\Object\ObjectStory\LinkData; use FacebookAds\Object\Fields\ObjectStory\LinkDataFields; use FacebookAds\Object\ObjectStorySpec; use FacebookAds\Object\Fields\ObjectStorySpecFields; use FacebookAds\Object\Fields\AdCreativeFields; $link_data = new LinkData(); $link_data->setData(array( LinkDataFields::IMAGE_CROPS => array( '100x100'=> array(array(200,90),array(900,790)), '191x100'=> array(array(0,200),array(1146,800)) ); LinkDataFields::MESSAGE => 'Great looking SXT handbags in store. #prettybag', LinkDataFields::LINK => 'http://example.com', LinkDataFields::IMAGE_HASH => '<IMAGE_HASH>', LinkDataFields::CALL_TO_ACTION => array( 'type' => 'LEARN_MORE', 'value' =>array( 'link' => 'http://example.com', ) ), )); $object_story_spec = new ObjectStorySpec(); $object_story_spec->setData(array( ObjectStorySpecFields::PAGE_ID => <PAGE_ID>, ObjectStorySpecFields::INSTAGRAM_ACTOR_ID => <IG_ACCOUNT_FBID>, ObjectStorySpecFields::LINK_DATA => $link_data, )); $creative = new AdCreative(null, 'act_<AD_ACCOUNT_ID>'); $creative->setData(array( AdCreativeFields::NAME => 'Instagram only creative', AdCreativeFields::OBJECT_STORY_SPEC => $object_story_spec, )); $creative->create();
以下の箇所が調べたIDになる。
ObjectStorySpecFields::INSTAGRAM_ACTOR_ID => <IG_ACCOUNT_FBID>,
もしここでIDを指定しない場合は、広告のリンク先がInstagramアカウントではなく、Facebook Pageになる。 どちらにしたいかは運用方針次第なので、決める。Instagramアカウントにしたいなら、IDの指定が必要。
ちなみに、Adsetはこんなかんじ。 developers.facebook.com
use FacebookAds\Object\AdSet; use FacebookAds\Object\Fields\AdSetFields; use FacebookAds\Object\Fields\TargetingFields; use FacebookAds\Object\Targeting; use FacebookAds\Object\Values\AdSetBillingEventValues; use FacebookAds\Object\Values\AdSetOptimizationGoalValues; use FacebookAds\Object\Values\PageTypes; $adset = new AdSet(null, 'act_<AD_ACCOUNT_ID>'); $adset->setData(array( AdSetFields::NAME => 'Instagram Adset', AdSetFields::OPTIMIZATION_GOAL => AdSetOptimizationGoalValues::LINK_CLICKS, AdSetFields::BILLING_EVENT => AdSetBillingEventValues::IMPRESSIONS, AdSetFields::BID_AMOUNT => 2, AdSetFields::DAILY_BUDGET => 1000, AdSetFields::CAMPAIGN_ID => <CAMPAIGN_ID>, AdSetFields::TARGETING => (new Targeting())->setData(array( TargetingFields::GEO_LOCATIONS => array( 'countries' => array('US'), ), TargetingFields::USER_OS => array('iOS'), TargetingFields::PAGE_TYPES => array(PageTypes::INSTAGRAM_STREAM), )), )); $adset->create();
TargetingFields::PAGE_TYPES => array(PageTypes::INSTAGRAM_STREAM),
が必要になる。
あとはいつもどおりAdを作れば完了。