我的目标是使用Facebook的批处理API创建大量广告:https://developers.facebook.com/docs/marketing-api/asyncrequests/v2.9
我正在通过以下网址发送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工具发送完全相同的请求时,它会成功制作广告。
答案 0 :(得分:1)
根据用于创建广告素材的API Documentation,您应该发布到网址“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 ,就像在示例中所做的那样,因此在添加了广告素材的情况下您可以使用相同的批处理对名称的相对引用:
creative={\"creative_id\":\"{result=create_creative:$.id}\"}
或者如果它是已创建的广告素材,您可以通过 creative_id 引用它:
creative={\"creative_id\":\"123456\"}
答案 1 :(得分:0)
我认为该消息是一个红色的鲱鱼 - 它没有看到您的身体的创意字段,因为OAuth未在您的POSTman请求中正确设置,因此它不会解析正文或看到广告素材字段。
如果您不知道如何在POSTman中设置OAuth,这是一个很好的教程: https://docs.brightcove.com/en/video-cloud/concepts/postman/postman.html