В настоящее время я создаю серверное CLI-приложение, извлекающее метрики объявлений Facebook через API-интерфейс Marketing. Это будет выполняться как длительно работающий сервис на сервере, который периодически выполняется без участия пользователя, но, похоже, я не могу найти способ получить жетон за это.
Все процедуры для получения токена доступа из facebook PHP Api, похоже, предполагает наличие пользователя для входа в Facebook. Я быстро посмотрел, смогу ли я подключиться вручную с помощью curl, но в процессе входа в Facebook есть некоторые переменные, сгенерированные js, что усложнит ситуацию.
Есть ли способ получить представление о Marketing API, используя только идентификатор приложения / секрет? Или же можно получить токен доступа без ввода данных пользователем?
Ближе всего я был таков:
Api::init(
'appID', // App ID
'APPSECRET',
"appid|appstring"// APP token
);
$campaign = new Campaign('campaignID');
$params = array(
'date_preset' => InsightsPresets::LAST_7_DAYS,
);
$insights = $campaign->getInsights([], $params);
print_r($insights);
Но я получаю сообщение об ошибке: «Невозможно определить целевой объект для этого запроса. В настоящее время поддерживаются следующие объекты: рекламный аккаунт, бизнес-аккаунт и связанные объекты».
С идентификатором приложения и секретом приложения вы можете получить только токен доступа к приложению. Нет никакого отношения к любому Пользователю с этим, поэтому у Facebook нет возможности узнать, разрешен ли вам доступ к Marketing API или Insights:
Для доступа к Marketing API вам нужен токен доступа пользователя, имеющий
разрешения ads_management или ads_read
Источник: https://developers.facebook.com/docs/marketing-api/quickstart#access-token
Вы можете использовать и хранить расширенный токен пользователя, действительный в течение 60 дней.
Больше информации о токенах и как их расширять:
У вас есть доступ к Управляющий делами? Вы можете сгенерировать там Системного Пользователя, который поставляется с токеном без срока действия. Посмотреть здесь.