use*_*626 4 php facebook facebook-graph-api
我正在尝试构建一项服务,使用户可以根据我们的电子邮件数据库创建具有自定义受众群体的Facebook广告。
在创建Facebook广告之前,我想创建广告预览。当我使用自己的帐户(facebook应用程序的管理员)登录时,此方法工作正常,但以测试用户身份登录时失败。
用户将执行以下操作:1.访问服务的网站。2.使用范围为public_profile,email,manage_pages,publish_pages,business_management,ads_management的Facebook帐户登录。3.选择要使用的facebook页面。4.创建AdCreative。由此可以进行广告预览。但它无法创建Adcreative,并给我以下错误:
"error":{"message":"Application does not have permission for this action","type":"OAuthException","code":10,"error_subcode":1341012,"is_transient":false,"error_user_title":"No permission to access this profile","error_user_msg":"You don't have required permission to access this profile","fbtrace_id":"EgTeMOXPCUp"}}
Run Code Online (Sandbox Code Playgroud)
访问令牌以及广告帐户都属于facebook应用。我也尝试使用页面访问令牌,但是我没有访问广告帐户的权限。这是代码:
function fbadcreative($url, $message, $carasoul, $fbtoken, $pageid){
$calength = count($carasoul);
$children = array();
for($i = 0; $i < $calength; $i++){
$caitem = $carasoul[$i];
$caitem['hash'] = fbaddimage($caitem['picture'], $caitem['id']);
$child = (new AdCreativeLinkDataChildAttachment())->setData(array(
AdCreativeLinkDataChildAttachmentFields::LINK => $caitem['link'],
AdCreativeLinkDataChildAttachmentFields::NAME => $caitem['name'],
AdCreativeLinkDataChildAttachmentFields::DESCRIPTION => $caitem['description'],
AdCreativeLinkDataChildAttachmentFields::IMAGE_HASH => $caitem['hash'],
));
$children[] = $child;
}
$link_data = new AdCreativeLinkData();
$link_data->setData(array(
AdCreativeLinkDataFields::LINK => $url,
AdCreativeLinkDataFields::CAPTION => $url,
AdCreativeLinkDataFields::MESSAGE => $message,
AdCreativeLinkDataFields::MULTI_SHARE_END_CARD => false,
AdCreativeLinkDataFields::MULTI_SHARE_OPTIMIZED => false,
AdCreativeLinkDataFields::CHILD_ATTACHMENTS => $children,
));
$object_story_spec = new AdCreativeObjectStorySpec();
$object_story_spec->setData(array(
AdCreativeObjectStorySpecFields::PAGE_ID => $pageid,
AdCreativeObjectStorySpecFields::LINK_DATA => $link_data,
));
$creative = new AdCreative(null, 'act_<accountid>');
$creative->setData(array(
AdCreativeFields::NAME => $url,
AdCreativeFields::OBJECT_STORY_SPEC => $object_story_spec,
));
try {
$creative->create();
return $creative->id;
//return $creative->read(array(AdCreativeFields::ID,));
} catch (FacebookAds\Http\Exception\AuthorizationException $e) {
echo 'Message: ' . var_dump($e);
$previousException = $e->getPrevious();
// Do some further processing on $previousException
exit;
}
Run Code Online (Sandbox Code Playgroud)
小智 5
我知道这是一篇较旧的文章,但是对于其他人来说,阅读如何解决它可能会很有趣。
您需要为通过api请求广告的用户提供广告,并分析将为其创建广告素材的PAGE的权限。
使用图形浏览器的示例请求在这里:
page_id/assigned_users?user=system_user_id&tasks=['ADVERTISE', 'ANALYZE']
| 归档时间: |
|
| 查看次数: |
7939 次 |
| 最近记录: |