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