Когда я использую этот код:
<?php
require_once "vendor/autoload.php";
$config = ...;
use FacebookAds\Api;
use FacebookAds\Object\Page;
Api::init(
$config['facebook']['app_id'], //APP_ID
$config['facebook']['app_secret'], //APP SECRET
$config['facebook']['app_access_token'] //Token generated by https://developers.facebook.com/tools/explorer for app
);
$page = new Page($config['facebook']['page_id']);
$leadgen_forms = $page->getLeadgenForms(); //heres an error
Я получаю ошибку:
Fatal error: Uncaught FacebookAds\Http\Exception\AuthorizationException: (#190) This method must be called with a Page Access Token in ...
Но когда я помещаю page_access_token вместо app_access_token (из https://developers.facebook.com/tools/explorer) я получаю ошибку: Uncaught FacebookAds\Http\Exception\AuthorizationException: Invalid appsecret_proof provided in the API argument in ...
, Когда я удаляю строку:
Похоже, вы работаете над формами, которые предназначены только для страниц. Вашему профилю должна быть назначена роль администратора / разработчика. Вы определенно, кажется, пропустили / скопировали неправильное значение для одного из нижеприведенных.
Ниже детали скопированы с https://developers.facebook.com/docs/marketing-api/guides/lead-ads/retrieving для более быстрого понимания
Можно прочитать лиды или обновления в режиме реального времени по:
Использование токена доступа к странице, то есть токен доступа администратора страницы. Маркер доступа к странице также позволяет читать определенные поля объявлений.
например, ad_id, campaign_id и т. д., если у вас есть хотя бы уровень рекламодателя
разрешения на рекламный аккаунт, связанные с ведущим объявлением.Использование токена доступа пользователя принадлежность к странице администратора. Чтобы получить доступ ко всем ведущим данным и данным об уровне рекламы, токен доступа должен иметь
manage_pages и ads_management scope.Вы можете управлять правами пользователей с помощью ролей страниц. Кроме того, если вам нужно
чтобы разрешить загрузку потенциальных клиентов пользователю с правами администратора, вы
может внести его в белый список с помощью конечной точки leadgen_whitelisted_users.
Другие ответы не показывают, как на самом деле отправить токен доступа к странице вместо токена доступа к приложению или токена доступа пользователя.
require_once "vendor/autoload.php";
$config = ...;
use FacebookAds\Api;
use FacebookAds\Object\Page;
use FacebookAds\Session;
$api = Api::init(
$config['facebook']['app_id'], //APP_ID
$config['facebook']['app_secret'], //APP SECRET
$config['facebook']['app_access_token'] //Token generated by https://developers.facebook.com/tools/explorer for app
);
$page_api = $api->getCopyWithSession(new Session(
$config['facebook']['app_id'], //APP_ID
$config['facebook']['app_secret'], //APP SECRET
$page_access_token // <-- You can get this by accessing 'me/accounts' w/ the initial API
));
$page = new Page($config['facebook']['page_id'], null, $page_api); // <-- use the api with the Page Access Token here
$leadgen_forms = $page->getLeadgenForms(); //heres an error