Приложение FB Этот метод должен вызываться с токеном доступа к странице

Когда я использую этот код:

<?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 ..., Когда я удаляю строку:

6

Решение

Похоже, вы работаете над формами, которые предназначены только для страниц. Вашему профилю должна быть назначена роль администратора / разработчика. Вы определенно, кажется, пропустили / скопировали неправильное значение для одного из нижеприведенных.
Ниже детали скопированы с https://developers.facebook.com/docs/marketing-api/guides/lead-ads/retrieving для более быстрого понимания

Можно прочитать лиды или обновления в режиме реального времени по:

Использование токена доступа к странице, то есть токен доступа администратора страницы. Маркер доступа к странице также позволяет читать определенные поля объявлений.
например, ad_id, campaign_id и т. д., если у вас есть хотя бы уровень рекламодателя
разрешения на рекламный аккаунт, связанные с ведущим объявлением.

Использование токена доступа пользователя принадлежность к странице администратора. Чтобы получить доступ ко всем ведущим данным и данным об уровне рекламы, токен доступа должен иметь
manage_pages и ads_management scope.

Вы можете управлять правами пользователей с помощью ролей страниц. Кроме того, если вам нужно
чтобы разрешить загрузку потенциальных клиентов пользователю с правами администратора, вы
может внести его в белый список с помощью конечной точки leadgen_whitelisted_users.

5

Другие решения

Другие ответы не показывают, как на самом деле отправить токен доступа к странице вместо токена доступа к приложению или токена доступа пользователя.

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
1

По вопросам рекламы [email protected]