php - 通过 Facebook Marketing API 创建广告时出错
问题描述
我正在尝试通过 Facebook Marketing API 创建广告。最后一步 - 广告创建不起作用,我找不到问题。
这是广告创建的代码:
/**
* @param RequestContract $request
* @param Ad $runner
* @return ResponseContract
* @throws \Exception
*/
public function run(RequestContract $request, AbstractCrudObject $runner): ResponseContract
{
$this->configureCreative($request);
$runner->setData([
AdFields::NAME => $request->getItem('[ad][name]'),
AdFields::ADSET_ID => $request->getItem('[facebook][adset_id]'),
AdFields::CREATIVE => $this->creative,
]);
$graphResponse = $runner->create(array(
Ad::STATUS_PARAM_NAME => Ad::STATUS_PAUSED,
));
return new ResponseGraph($graphResponse);
}
private function configureCreative(RequestContract $request) : void
{
$linkData = new AdCreativeLinkData();
$linkData->setData(array(
AdCreativeLinkDataFields::LINK => $request->getItem("[ad][link]"),
AdCreativeLinkDataFields::CALL_TO_ACTION => [
'type' => AdCreativeCallToActionTypeValues::APPLY_NOW
],
AdCreativeLinkDataFields::PICTURE => $request->getItem('[ad][image_url]'),
));
$adCreativeObjectStorySpec = new AdCreativeObjectStorySpec();
$adCreativeObjectStorySpec->setData(array(
AdCreativeObjectStorySpecFields::PAGE_ID => $request->getItem('[ad][page_id]'),
AdCreativeObjectStorySpecFields::LINK_DATA => $linkData,
//AdCreativeObjectStorySpecFields::INSTAGRAM_ACTOR_ID => ??? TODO add?
));
$this->creative->setData([
AdCreativeFields::TITLE => $request->getItem("[ad][title]"),
AdCreativeFields::BODY => $request->getItem("[ad][message]"),
AdCreativeFields::OBJECT_STORY_SPEC => $adCreativeObjectStorySpec
]);
}
通过测试请求,我发现问题来自AdCreativeLinkDataFields::PICTURE
配置字段。
当使用一些 450x450 像素的示例图像进行测试时 - 它正在工作。当尝试传递尺寸为 1200 x 628 像素的真实图像(如 facebook 建议的那样)时,我收到异常
FacebookAds\Http\Exception\AuthorizationException: Unsupported post request.
我试图将此图像调整为 628 x 628 - 同样的错误。试图将它托管在不同的服务器上 - 没有效果。
尝试卷曲:
curl \
-F 'name=Trial Company ' \
-F 'adset_id=xxxx' \
-F 'creative={"title":"Trial Company Inc","body":"xxx","object_story_spec":{"page_id":"xxxxxxxx","link_data":{"link":"link","call_to_action":{"type":"APPLY_NOW"},"picture":"link"}}}' \
-F 'status=PAUSED' \
-F 'access_token=xxxxxx' \
-F 'appsecret_proof=xxxxx' \
https://graph.facebook.com/v3.2/act_{id}}/ads
得到错误:
{"error":{"message":"Unsupported post request.","type":"GraphMethodException","code":100,"fbtrace_id":"AtGSfGrLe42"}}
没有任何解释为什么会发生此错误。
更新:为当前图像创建 AdImage - 没有发生错误。尝试使用image_hash
inLINK_DATA
而不是picture
- 发生相同的错误。