Приложение 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 .... Когда я удаляю строку:

Author: unbreak, 2018-03-09

2 answers

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

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

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

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

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

 5
Author: Rajesh, 2018-03-12 07:08:29

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

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
 0
Author: knsheely, 2018-03-30 23:43:09