我正在尝试使用Facebook php-ads-sdk访问与广告系列相关的数据(例如国家/地区,每千次展示费用,花费的...)
Facebook用户已被添加为Facebook Bussiness Manager中的管理员。
我要做的第一件事是获取给定用户的app_secret和app_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();
最后,我尝试使用Bussiness Manager帐户ID获取一些数据:
$account = new AdAccount($this->accountId);
$test = $account->getAdCampaigns();
但是我收到以下错误消息:
[FacebookAds \ Http \ Exception \ AuthorizationException]
不支持的获取请求。请阅读Graph API文档
有什么建议?
更新:
正如保罗·贝恩(Paul Bain)在第一条评论中所建议的那样,我更改了以下几行:
$account = new AdAccount($this->accountId);
$test = $account->getAdCampaigns();
对于这些:
$account = new AdAccount('act_' . $this->accountId);
$test = $account->getAdCampaigns();
现在,我得到了另一个错误消息:
(#10)您没有足够的权限执行此操作
我不知道为什么我没有足够的权限,因为正如我之前所说,在Facebook Bussiness Manager中将用户添加为管理员之前。
同样在facebook用户个人资料中的“设置/高级”下,“授权广告帐户ID”中添加了Facebook Bussiness Manager帐户ID。
该应用程序已获得基本访问级别的批准。
您需要在要尝试访问的adaccount的ID前面加上前缀,act_
否则将无法正常工作。
例如,如果您执行以下操作,则会在API响应中看到所有adaccounts的ID都以这种方式作为前缀:
use FacebookAds\Object\AdUser;
$user = new AdUser('me');
$accounts = $user->getAdAccounts(array('name'));
foreach($accounts as $act) {
echo $account->id." - ".$account->name.PHP_EOL;
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句