facebook-php-ads-sdkを使って、Instagramに対応したクリエイティブと広告セットを作る
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を作れば完了。