我正在尝试将该名称与广告帐户相关联。使用API调用/me
获取我的用户信息没问题。调用/ me / adaccounts获取一个带有数据节点的对象,该数据节点是具有id节点的帐户id对象数组。我使用此ID尝试获取广告帐户,但我收到以下错误:
不允许使用全局ID [xxxx]。请改用特定于应用程序的ID。
代码包含在下面,有人可以告诉我我做错了什么吗?
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)
,它说我正在使用API的第2版。
[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的版本是什么,我都会获得相同的用户ID。所以有些事搞砸了。
答案 0 :(得分:0)
您可以尝试在调用中添加Graph API版本前缀:
$adAccountsResponse = $api->call('/v2.1/me/adaccounts','GET');
答案 1 :(得分:0)
这是一个非常奇怪的错误,因为它实际上与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";
}