facebook marketing(市场营销) API(3)
如果你只想管理广告,而不想管理BM,那就需要市场营销API了。
通过BM api管理完相互授权后,就可以让自己的运营参与进行投放了(市场营销API也支持非BM操作,即广告主自己操作)。
市场营销按不同的用户分为三种情况:
1.BM下 员工没有FB账号,也不想关联FB账号(登录FB需要FQ)
这种情况可以使用系统用户, <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');