使用Facebook的广告SDK的PHP不支持GET请求(Unsupported get reque

2019-10-23 21:57发布

我试图访问相关的广告活动数据(如国家,CPM,花...)使用Facebook的PHP的广告-SDK

Facebook的用户已经被添加作为Facebook的经营业务Manager管理。

我做的第一件事是获取给定用户的app_secretAPP_ID访问令牌:

public function getAccessToken()
{
    try {
        $response = $this->client->get(
            $this->accessTokenUrl, [
            'query' => [
                'client_id' => $this->appId,
                'client_secret' => $this->appSecret,
                'grant_type' => 'client_credentials',
            ],
            'stream' => true
        ]);
    } catch(RequestException $e) {
        echo $e->getMessage();
    }

    $body = $response->getBody();
    $contents = $body->getContents();

    $contentsArray = explode('=', $contents);

    return $contentsArray[1];
}

它有以下形式:

=的access_token XXXXXX

这就是为什么我必须做出一个爆炸。

一旦我得到的访问令牌,我在API认证:

Api::init($this->appId, $this->appSecret, $this->accessToken);
$api = Api::instance();

最后,我尝试使用方式Contact Manager帐户ID来获得一些数据:

$account = new AdAccount($this->accountId);
$test = $account->getAdCampaigns();

但我得到以下错误信息:

[FacebookAds \ HTTP \异常\ AuthorizationException]
不支持GET请求。 请阅读图形API文档

有什么建议么?

更新:

正如保罗·贝恩第一评论所说,我改变了这几行:

$account = new AdAccount($this->accountId);
$test = $account->getAdCampaigns();

对于这些的:

$account = new AdAccount('act_' . $this->accountId);
$test = $account->getAdCampaigns();

现在我得到一个不同的错误信息:

(#10)您没有足够的权限来执行此操作

我不知道为什么我没有足够的权限,因为正如我所说的用户添加为Facebook的经营业务Manager管理之前。

此外,在Facebook的用户资料,在设置/高级,Facebook的经营业务经理帐户ID是“授权的广告帐户编号”加

该应用程序已被批准用于基本的访问级别。

Answer 1:

你需要前缀您正在尝试与访问adaccount的ID act_否则将无法正常工作。

例如,如果你做到以下几点,你会看到,所有的adaccounts的ID前缀这种方式在API响应:

use FacebookAds\Object\AdUser;
$user = new AdUser('me');
$accounts = $user->getAdAccounts(array('name'));
foreach($accounts as $act) {
  echo $account->id." - ".$account->name.PHP_EOL;
}


文章来源: Unsupported get request using Ads Facebook SDK for PHP