【问题标题】:FB App This method must be called with a Page Access TokenFB App 必须使用页面访问令牌调用此方法
【发布时间】:2018-03-09 13:49:38
【问题描述】:

当我使用此代码时:

<?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 ...。当我删除行时:

【问题讨论】:

  • 向我们展示您在哪里/如何“使用 page_access_token 代替 app_access_token”
  • @CBroe,我只是从资源管理器复制并粘贴到配置中代替 app_access_token;

标签: php facebook fbsdk


【解决方案1】:

您似乎正在处理仅用于页面的潜在客户表单。您的个人资料必须分配有管理员/开发者角色。您肯定似乎错过/复制了以下其中一项的错误值。 下面的细节是从https://developers.facebook.com/docs/marketing-api/guides/lead-ads/retrieving复制过来的,方便理解

人们可以通过以下方式阅读线索或实时更新:

使用页面访问令牌,即页面管理员的页面访问令牌。页面访问令牌还允许您读取广告特定字段 例如 ad_id、campaign_id 等,如果您至少有广告客户级别 对与线索广告关联的广告帐户的权限。

使用用户访问令牌属于页面管理员。要访问所有潜在客户数据和广告级别数据,访问令牌应该具有 manage_pages 和 ads_management 范围。

您可以使用主页角色管理用户权限。此外,如果您需要 要允许在页面上为具有非管理员角色的用户下载线索,您 可以使用leadgen_whitelisted_users 端点将其列入白名单。

【讨论】:

【解决方案2】:

其他答案并未显示如何实际发送页面访问令牌而不是应用访问令牌或用户访问令牌。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-03-17
    • 2018-09-01
    • 2014-10-18
    • 1970-01-01
    • 2018-02-04
    • 1970-01-01
    • 1970-01-01
    • 2012-08-23
    相关资源
    最近更新 更多