如何使用 Facebook 营销 api 在单个查询中获取所有广告的见解

问题描述

我想用 Python 编写查询,我想要单个请求或多个请求中的所有广告效果详细信息。 我曾尝试使用以下查询,但多次发送以向 Facebook 发送请求是错误的想法,而且 Facebook 还阻止用户 30 分钟。

    my_app_id = 'my_app_id'
    my_app_secret = 'my_app_secret'
    my_access_token = 'my_token'
    FacebookAdsApi.init(my_app_id,my_app_secret,my_access_token)
    my_account = AdAccount('act_')
    ad_campaign_list = my_account.get_campaigns(fields=[Campaign.Field.name,Campaign.Field.id])
        for campaign in ad_campaign_list:
        campaign_index=Campaign(campaign["id"])
        ad_setlist = campaign_index.get_ad_sets(fields=[AdSet.Field.name,AdSet.Field.id])
        for ad_set in ad_setlist:
            print(ad_set)
            ad_set_index = AdSet(ad_setlist["id"])
            ad_list = ad_set_index.get_ads(fields=[Ad.Field.name,Ad.Field.id])
            for ad in ad_list:
                print(ad)   

我有一个类似的错误

  Message: Call was not successful
  Method:  GET
  Path:    https://graph.facebook.com/v9.0/act_/ad
  Params:  {'fields': 'name,id','summary': 'true'}

  Status:  400
  Response:
    {
      "error": {
        "message": "(#17) User request limit reached","type": "OAuthException","is_transient": true,"code": 17,"error_subcode": 2446079,"fbtrace_id": "Al42-tg1iVmvfE79RVrGDJW"
      }
    }

我想用来

    my_app_id = 'my_app_id'
    my_app_secret = 'my_app_secret'
    my_access_token = 'my_token'
    FacebookAdsApi.init(my_app_id,my_access_token)
    my_account = AdAccount('act_')
    ad = my_account.get_ads(fields=[Ad.Field.name,Ad.Field.id])
    print(ad)

但我没有所有的广告

解决方法

您可以使用图谱 API 执行的请求数量有限。要了解有关限制的更多信息,check this link,但总的来说,您可以进行以下调用:

  • 一小时内的通话次数 = 200 * 用户数

为了避免这个问题,我建议你不要像这样传递字段,而是像这样传递它们:

report = facebook_acc.get_campaigns(fields=['name,adsets{id,ads{id,name}}'])

这样您就可以在一次查询中获取所有广告信息。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...