【问题标题】:Facebook's Batch Request not picking up a JSON parameterFacebook 的批处理请求未获取 JSON 参数
【发布时间】:2017-10-25 20:08:25
【问题描述】:

我的目标是使用 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-批次

batch 参数中的 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 的 Graph API 工具发送完全相同的请求时,它会成功创建广告。

【问题讨论】:

    标签: facebook facebook-graph-api facebook-marketing-api facebook-batch-request


    【解决方案1】:

    根据为创建广告而提供的API Documentation,您应该将其发布到 URL “v2.9/act_187687683/adcreatives”...使用您正在显示的批次片段制作广告。

    如果,如您所说,您的意图是创建一个 AdCreative,那么您应该使用类似上述的东西,它在 body 中与您使用的不同:

             {
              "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,如示例中所做的那样,因此对于添加的广告同一批次,您可以使用对 name 的相对引用:

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

    或者如果它是一个已经创建的广告,您可以通过 creative_id 引用它:

             creative={\"creative_id\":\"123456\"}
    

    【讨论】:

    • 我写错了。我需要制作广告而不是广告素材。让我编辑它。我已经尝试通过 ID 引用广告素材。在我的问题中,您会看到我试图通过传递整个创意凭据来创建广告。无论哪种情况,我面临的错误都是相同的(请参见上文)
    【解决方案2】:

    我认为该消息是一条红鲱鱼 - 它没有看到您正文的创意字段,因为 OAuth 未在您的 POSTman 请求中正确设置,因此它没有解析正文或看到创意字段。

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

    【讨论】:

    • 你是对的@“它没有看到你身体的创意场”。无论我做什么,邮递员都看不到它。我的 PHP 代码也返回相同的错误。但是,如果我在图形浏览器中使用完全相同的 JSON,则会创建一个广告。
    猜你喜欢
    • 2017-07-17
    • 2023-03-06
    • 2016-02-19
    • 2016-10-15
    • 2013-03-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多