Facebook的批处理请求未选取JSON参数



我的目标是使用Facebook的Batch API创建大量广告: https://developers.facebook.com/docs/marketing-api/asyncrequests/v2.9

我正在通过此 URL 发送 POST 请求:

https://graph.facebook.com/v2.9/act_158365238/ads

我根据文档发送 2 个参数:

1- access_token

2-批次

批处理参数中的 JSON 如下所示:

{
  "method": "POST",
  "relative_url": "v2.9/act_158365238/ads",
  "attached_files": "test1",
  "body": "creative={"title":"Test title 1","body":"Test body 1","object_url":"https://apps.facebook.com/testapp/", "image_file":"test1.jpg"}&targeting={"countries":["US"]}&name=test1"
}

问题所在

当我使用 POSTman 或我的 PHP 代码发送此请求时,它会抛出以下错误

{
  "error": {
    "message": "(#100) The parameter creative is required",
    "type": "OAuthException",
    "code": 100,
    "fbtrace_id": "Gj2sG7N8l1f"
  }
}

但是,当我通过Facebook的图形API工具发送完全相同的请求时,它成功地创建了广告。

根据提供的用于创建广告素材的 API 文档,您应该发布到 URL "v2.9/act_187687683/adcreatives">...您显示的批次片段用于创建广告。

如果,正如你所说,你的目的是创建一个广告,那么你应该使用类似上面的东西,它在正文中与你正在使用的有所不同:

         {
          "method": "POST",
          "name": "create_creative",
          "relative_url": "v2.9/act_187687683/adcreatives",
          "attached_files": "test1",
          "body": "title=Test title&body=Test body&link_url=http://www.test12345.com&image_file=test1.jpg"
         }

另一方面,如果您要创建的是添加内容,则应考虑按 ID 引用 AdCreative,就像示例中所做的那样,因此,对于在同一批次中添加的广告素材,您可以使用对名称的相对引用:

         creative={"creative_id":"{result=create_creative:$.id}"}

或者,如果它是已创建的广告素材,您可以按以下creative_id引用它:

         creative={"creative_id":"123456"}

我认为这条消息是一个红鲱鱼——它没有看到你身体的创意领域,因为你的 POSTman 请求中没有正确设置 OAuth,所以它没有解析正文或看到创意领域。

如果你不知道如何在POSTman中设置OAuth,这里有一个很好的教程:https://docs.brightcove.com/en/video-cloud/concepts/postman/postman.html

最新更新