问题描述
我正在尝试使用Facebook php-ads-sdk
I'm trying to access ads campaigns related data (such as country, cpm, spent ...) using Facebook php-ads-sdk
已经在Facebook Bussiness Manager中将Facebook用户添加为管理员.
The Facebook user is already added as admin in Facebook Bussiness Manager.
我要做的第一件事是根据用户的 app_secret 和 app_id 获得访问令牌:
The first thing I do is get the access token given the app_secret and app_id of the user:
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];
}
它的形式为:
这就是为什么我必须爆炸.
That's why I have to make an explode.
获得访问令牌后,我将在Api中进行身份验证:
Once I got the access token, I authenticate in the Api:
Api::init($this->appId, $this->appSecret, $this->accessToken);
$api = Api::instance();
最后,我尝试使用Bussiness Manager帐户ID获取一些数据:
Finally I try to get some data using the Bussiness Manager account id:
$account = new AdAccount($this->accountId);
$test = $account->getAdCampaigns();
但是我收到以下错误消息:
But I get the following error message:
有什么建议吗?
更新:
正如保罗·贝恩(Paul Bain)在第一条评论中所建议的那样,我更改了以下几行:
As suggested in the first comment by Paul Bain, I changed these lines:
$account = new AdAccount($this->accountId);
$test = $account->getAdCampaigns();
对于这些:
$account = new AdAccount('act_' . $this->accountId);
$test = $account->getAdCampaigns();
现在我得到了另一条错误消息:
And now I get a different error message:
我不知道为什么我没有足够的权限,因为正如我之前所说,在Facebook Bussiness Manager中将用户添加为管理员之前.
I don't know why I don't have sufficient permissions, since as I said before the user is added as admin in Facebook Bussiness Manager.
还在Facebook用户个人资料的设置/高级"下,在授权广告帐户ID"中添加了Facebook Bussiness Manager帐户ID
Also in the facebook user profile, under settings/advanced, the Facebook Bussiness Manager account id is added in 'Authorized Ad Account IDs'
该应用已获准使用基本访问权限级别.
The app is approved for Basic access level.
推荐答案
您需要为要尝试访问的adaccount的ID加上act_
前缀,否则将无法正常工作.
You need to prefix the ID of the adaccount you are trying to access with act_
otherwise this will not work.
例如,如果执行以下操作,则会在API响应中看到所有adaccounts的ID都以这种方式加上前缀:
For example, if you do the following, you will see that the IDs of all the adaccounts are prefixed this way in the API response:
use FacebookAds\Object\AdUser;
$user = new AdUser('me');
$accounts = $user->getAdAccounts(array('name'));
foreach($accounts as $act) {
echo $account->id." - ".$account->name.PHP_EOL;
}
这篇关于不支持使用Ads Facebook SDK for PHP获取请求的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!