【问题标题】:Facebook - You don't have required permission to access this profileFacebook - 您没有访问此个人资料所需的权限
【发布时间】:2019-12-30 13:57:10
【问题描述】:

我正在尝试构建一项服务,让用户可以根据我们的电子邮件数据库创建具有自定义受众的 Facebook 广告。

在创建 Facebook 广告之前,我想创建广告预览。当我使用自己的帐户(facebook 应用程序的管理员)登录时,这工作得很好,但在以测试用户身份登录时失败。

这是用户将要做的: 1. 访问服务的网站。 2. 使用 Facebook 帐户登录,范围:public_profile、email、manage_pages、publish_pages、business_management、ads_management 3.选择要使用的facebook页面 4. 创建广告创意。由此可以进行广告预览。但它无法创建 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"}}

访问令牌和广告帐户属于 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;
}

【问题讨论】:

  • 你最终弄清楚了吗?

标签: php facebook facebook-graph-api


【解决方案1】:

我知道这是一篇较旧的帖子,但其他人可能会感兴趣阅读如何解决这个问题。

您需要向通过 api 请求的用户授予广告并分析将为其创建广告素材的 PAGE 权限。

此处使用图形资源管理器的示例请求: page_id/assigned_users?user=system_user_id&amp;tasks=['ADVERTISE', 'ANALYZE']

【讨论】:

  • 我试过这样做,但是如果我设置业务字段You do not have permission to perform this action. This action requires that you can MANAGE_PERMISSIONS on a managing business account. Or it requires that you can ADMINISTER on this object Note: to use do this action on behalf of a business account the \"business\" field must be set. 任何想法,尝试为我的管理员系统用户分配页面事件时出现以下错误?
【解决方案2】:

在我的情况下,由于提供了错误的页面 ID,我遇到了同样的错误,我提供了另一个未链接到此广告帐户的页面 ID。

【讨论】:

    猜你喜欢
    • 2014-07-22
    • 1970-01-01
    • 2013-11-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多