Я пытаюсь получить имя, связанное с рекламным аккаунтом. Использование вызова API /me
не получает мою информацию пользователя без проблем. Вызов / me / adaccounts возвращает мне объект с узлом данных, который представляет собой массив объектов идентификатора учетной записи, который имеет узел идентификатора. Я использую этот идентификатор, чтобы попытаться получить рекламный аккаунт, и получаю следующую ошибку:
Глобальный идентификатор [xxxx] недопустим. Пожалуйста, используйте вместо этого конкретный идентификатор приложения.
Код приведен ниже, может кто-нибудь сказать мне, что я делаю не так?
FacebookSession::setDefaultApplication($config['id'], $config['secret']);
$session = new FacebookSession($accessToken);
$api = new Api($session);
echo '<pre>';
$adAccountsResponse = $api->call('/me/adaccounts','GET');
$adAccounts = $adAccountsResponse->getResponse();
foreach($adAccounts->data as $adAccount)
{
$adAccountId = $adAccount->account_id;
$adAccount = new AdAccount($adAccountId, null, $api);
$adAccount->read(array(AdAccountFields::NAME));
print_r($adAccount);
}
Я сделал print_r($api)
и это говорит, что я использую версию 2 API.
[responseHeaders:protected] => Array
(
[http_code] => HTTP/1.1 200 OK
[Last-Modified] => 2014-07-20T14:37:10+0000
[Facebook-API-Version] => v2.0
[ETag] => "XXXXXXXXXXXXXX"[Content-Type] => application/json; charset=UTF-8
[Pragma] => no-cache
[Access-Control-Allow-Origin] => *
[X-FB-Rev] => 1454522
[Cache-Control] => private, no-cache, no-store, must-revalidate
[Expires] => Sat, 01 Jan 2000 00:00:00 GMT
[X-FB-Debug] => "XXXXXXXXXXXXXX"[Date] => Wed, 15 Oct 2014 15:10:36 GMT
[Connection] => keep-alive
[Content-Length] => 234
)
Интересно, что когда я использую Graph API Explorer, переключаясь между номерами версий API с помощью имеющегося у меня токена, я получаю один и тот же идентификатор пользователя, независимо от версии API. Так что что-то напутало.
Это очень странная ошибка, поскольку она не относится к счетам adaccounts.
Однако существует более простой способ получить список атрибутов, которые вы хотите за один вызов, используя соединения объекта AdUser:
use FacebookAds\Object\AdUser;
use FacebookAds\Object\Fields\AdAccountFields;
$user = new AdUser('me');
$accounts = $user->getAdAccounts(array(AdAccountFields::NAME)));
foreach($accounts as $account) {
echo $account->name."\n";
}
Вы можете попытаться добавить префикс версии API Graph к вашему вызову:
$adAccountsResponse = $api->call('/v2.1/me/adaccounts','GET');