gpt4 book ai didi

python - Facebook 业务 SDK : cannot create an Ad

转载 作者:太空宇宙 更新时间:2023-11-04 00:13:03 28 4
gpt4 key购买 nike

我无法创建带有指向移动应用的外部链接的简单广告。我已正确设置访问权限,可以创建广告系列、广告集、加载图像,但在创建广告期间出现错误:

Ads and ad creatives must be associated with a Facebook Page. Try connecting your ad or ad creative to a Page and resubmit your ad.

但是我关联了一个页面!这是我的代码:

# No problem with these ones
adset = ...
image_hash = '...'
url = 'https://itunes.apple.com/app/96...'
page_id = '25036...'

# Create an Ad Creative
creative = AdCreative()
creative['_parent_id'] = my_ads_acc_id
creative[AdCreative.Field.title] = 'Aivan Test Creative'
creative[AdCreative.Field.body] = 'Aivan Test Ad Creative Body'
creative[AdCreative.Field.actor_id] = page_id
creative[AdCreative.Field.link_url] = url
creative[AdCreative.Field.object_url] = url
creative[AdCreative.Field.object_type] = AdCreative.ObjectType.domain
creative[AdCreative.Field.call_to_action_type] = AdCreative.CallToActionType.use_mobile_app
creative[AdCreative.Field.image_hash] = image_hash

# Create an Ad
ad = Ad()
ad['_parent_id'] = my_ads_acc_id
ad[Ad.Field.name] = 'Aivan Ad'
ad[Ad.Field.adset_id] = adset[AdSet.Field.id]
ad[Ad.Field.creative] = creative
# This line generates an exception:
ad.remote_create(params={
'status': Ad.Status.paused,
})

我已经指定了 actor_id 字段,我也尝试了其他不同的代码示例,但没有任何效果。如何连接页面?

附加信息:

  • 我的应用程序处于开发模式。我不能转生产模式,因为它需要一个完整的应用程序的审查。

  • 我曾尝试将 object_story_speclink_data 一起使用,但它会产生其他错误,因为它在开发模式下不起作用。

  • 应用程序和页面与 Facebook 商务管理平台相关联。

  • 如果我使用应用 token 或系统用户 token 初始化 API,结果是相同的:FacebookAdsApi.init(app_id, app_secret, app_access_token/system_user_token)。系统用户可以访问广告帐户和页面。

最佳答案

我很久以前就解决了这个问题,从那时起,我的服务器应用程序成功地为网站和移动应用程序创建了大量这两种类型的 Facebook 广告。解决问题的第一步是了解这些广告类型在 Facebook 上是完全不同的,它们需要对 Campaign、AdSet 和 Ad 进行不同的设置。这是我的移动广告创建代码。

1) 创建Campaign object . account_id 必须是您的广告帐户的 ID。

campaign = Campaign()
campaign['_parent_id'] = account_id
campaign[Campaign.Field.name] = 'Some Campaign Name'
campaign[Campaign.Field.objective] = 'APP_INSTALLS'
campaign.remote_create()
campaign_id = str(campaign[Campaign.Field.id])

2) 创建AdSet object .

adset = AdSet()
adset['_parent_id'] = account_id
adset.update({
AdSet.Field.name: 'Some AdSet Name',
AdSet.Field.campaign_id: campaign_id,
AdSet.Field.lifetime_budget: budget * 100,
AdSet.Field.bid_strategy: 'LOWEST_COST_WITHOUT_CAP',
AdSet.Field.billing_event: AdSet.BillingEvent.link_clicks,
AdSet.Field.optimization_goal: AdSet.OptimizationGoal.link_clicks,
AdSet.Field.promoted_object: {
'object_store_url': app_store_url,
'application_id': ad_app_id,
},
AdSet.Field.targeting: targeting_object,
AdSet.Field.start_time: '2018-12-01 00:00:00',
AdSet.Field.end_time: '2018-12-30 23:59:00',
})
adset.remote_create()
adset_id = str(adset[AdSet.Field.id])

请注意,要制作移动广告,您首先需要将您的移动应用程序注册为 Facebook 应用程序(您将在此处获得 ad_app_id)并指定指向 Apple App Store 和 Google Play Market 的链接。因此,app_store_url 的值必须等于您的 Facebook 应用程序设置中的其中一个链接。不幸的是,应用程序只能手动注册(如果您知道如何以编程方式注册 - 请发表评论)。

另请注意,billing_eventoptimization_goal 与广告类型(移动/网络)相关,并且彼此相关,您不能只选择另一个。 (但是如果你知道这是可能的,或者有一些关于这个主题的文档——请告诉我。)

预算 是以您广告帐户的货币表示的金额。您可以指定 lifetime_budget 或类似 day_budget 的内容,请阅读相关文档。

3) 然后,你必须创建AdCreative object与其他一些子对象。请注意,其中一些代码行仅对于 FB 广告是必需的,其他代码行对于 IG 是必需的,其他代码行对于两者都是必需的,但它们一起适用于所有内容。你可以找到description for all the formats here .

link_data = AdCreativeLinkData()
link_data[AdCreativeLinkData.Field.name] = main_text
link_data[AdCreativeLinkData.Field.message] = title
link_data[AdCreativeLinkData.Field.link] = app_store_url
link_data[AdCreativeLinkData.Field.image_hash] = image_hash
link_data[AdCreativeLinkData.Field.call_to_action] = {
'type': 'INSTALL_MOBILE_APP',
'value': {
'application': ad_app_id,
'link': app_store_url,
},
}

object_story_spec = AdCreativeObjectStorySpec()
object_story_spec[AdCreativeObjectStorySpec.Field.page_id] = page_id
object_story_spec[AdCreativeObjectStorySpec.Field.link_data] = link_data

creative = AdCreative()
creative['_parent_id'] = account_id
creative[AdCreative.Field.object_story_spec] = object_story_spec
creative[AdCreative.Field.title] = main_text
creative[AdCreative.Field.body] = title
creative[AdCreative.Field.actor_id] = page_id
creative[AdCreative.Field.link_url] = app_store_url
creative[AdCreative.Field.image_hash] = image_hash

要上传图片并获取 image_hash,请查看 this doc . page_id 必须是页面的 ID,其名称和 Logo 将显示为广告作者。

您必须注意,创建广告的用户必须有权访问此页面、在 FB 上注册的移动应用程序 (ad_app_id) 以及广告帐户 ( account_id).在我的服务器应用程序中,我使用 Facebook system users对于所有使用 API 的工作。

4) 最后,创建 Ad object本身:

ad = Ad()
ad['_parent_id'] = account_id
ad[Ad.Field.name] = 'Some Ad Name'
ad[Ad.Field.adset_id] = adset_id
ad[Ad.Field.creative] = creative
ad.remote_create(params={
'status': Ad.Status.active,
})
ad_id = str(ad[Ad.Field.id])

就是这样!

关于python - Facebook 业务 SDK : cannot create an Ad,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51822179/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com