如果你只想管理廣告,而不想管理BM,那就需要市場營銷API了。
通過BM api管理完相互授權后,就可以讓自己的運營參與進行投放了(市場營銷API也支持非BM操作,即廣告主自己操作)。
市場營銷按不同的用戶分為三種情況:
1.BM下 員工沒有FB賬號,也不想關聯FB賬號(登錄FB需要翻牆)
這種情況可以使用系統用戶, <BUSINESS_ID>/system_users 系統用戶是機器用戶(假的,虛擬的),可以將自己系統內的賬號和機器用戶關聯,然后以機器用戶的token進行操作。
授權過程:
a.通過超管token創建 超管系統用戶(也可去FB提供的BM后台手動創建)
b.拿到超管系統用戶的token(也可用超管的token),去創建系統用戶
c.調用API為該系統用戶安裝應用
d.生成該系統用戶的token(填寫需要的授權)
2.BM下 員工有FB賬號,可以進行賬號授權綁定
3.廣告主,想管理自己的廣告
這兩種均可以讓用戶登陸FB賬號,並授權(manage_pages、ads_management、ads_read)。
然后切入正題
前文說道,FB api是rest風格,下面介紹幾個比較重要的節點:
/me #代表當前授權用戶
/act_<AD_ACCOUNT_ID> #廣告賬戶ID節點
/<BUSINESS_SCOPED_USER_ID> #注:每個用戶在每個BM下均會分配一個新的用戶ID,在該BM下的操作均需通過此用戶ID節點
常用API列表:
//獲取可管理的賬戶列表 me/adaccounts?fields=id,name,users //可根據users查看權限 <BUSINESS_SCOPED_USER_ID>/assigned_ad_accounts //(和BM下用戶同api做對比) //獲取可管理的主頁(如果有授權,以當前用戶名義在所有賬戶下均可用) me/accounts <BUSINESS_SCOPED_USER_ID>/assigned_pages //應用無法直接獲取,可獲取某賬戶可投放的應用,系統會根據授權用戶+賬戶關聯的應用合並 act_<AD_ACCOUNT_ID>/advertisable_applications
上述基本把投放之前的所有結構均闡述清楚,接下來就是具體投放的硬菜了
當前獲取到廣告列表后,之后的投放相關基本全圍繞廣告賬戶ID節點展開(注:賬戶ID必須有 act_ 前綴)
URL | 代表的含義 |
---|---|
|
定義廣告系列目標,包含一個或多個廣告組 |
|
廣告組:包含使用同一預算、排期、競價和定位條件的所有廣告 |
|
廣告:廣告數據,如創意元素和成效衡量信息 |
|
創意:定義廣告的展示效果和內容 |
|
圖片:在廣告創意中使用的圖片庫。可以單獨上傳和管理 |
|
視頻:在廣告創意中使用的視頻庫。可以單獨上傳和管理 |
|
與廣告帳戶關聯的用戶列表 |
|
成效分析的界面。刪除子對象的重復數據,提供整理好的異步報告。 |
成效報告在廣告賬戶、系列、組、廣告層級均有,可根據 /<***ID>/insights 獲取 。
FB的API有一個有趣的地方就是,某節點下的子節點通常都可用過該節點附加上 fields=參數獲取,如上述的 act_<AD_ACCOUNT_ID>/users 節點,可通過 act_<AD_ACCOUNT_ID>?fields=users獲取到,作為一個小技巧收藏一下。
API結構:
營銷目標以應用安裝量為例,具體的業務結構為:
綠色底框:固定選項值
橘色底框:搜索/需通過額外API獲取
紅色底框:通過之前的授權關系獲取
對於添加廣告和其他內容時需用到的信息,FB的開發文檔上有詳細介紹:
- 某字段的值是少量、固定的值,需開發者自己做好處理(如:廣告系列的投放目標、廣告組里需要用到的受眾的性別,均是固定值)
- 某字段的值是大量、會定時更新的,FB提供了其獲取的API(如:受眾里的國家,FB提供了獲取所有國家的API)
- 某字段的值是無窮大,且完全不固定無法讓開發者同步至本地,FB提供了搜索API(如獲取語言的API,其實這個API和上述API類似,只是加上了搜索的參數)
暫時結束:關於FB 廣告API的記錄,到此為止。具體開發代碼可能后續會傳至github,本人也是初識FB,理解不到之處還望各位指正!
//附上部分代碼片段 //創建時可通過batch(批量創建接口) $batch['batch'][] = array( 'method'=>'POST', 'relative_url'=>'{{account_id}}/campaigns', 'body'=>http_build_query(...) ); //介紹幾個常用的字段 batchCampaign $fields = array('name', 'account_id', 'status', 'objective','special_ad_category'); batchAdset $fields = array('name', 'campaign_id', 'status', 'lifetime_budget', 'daily_budget','start_time',
'end_time', 'bid_strategy', 'bid_amount', 'billing_event', 'optimization_goal', 'pacing_type', 'attribution_spec', 'targeting', 'promoted_object'); batchAd $fields = array('adset_id', 'name', 'status', 'creative');