没有用户输入的 Facebook 营销 API 令牌

Facebook Marketing API token without user input

我目前正在创建一个服务器 CLI 应用程序,通过营销 API 检索 facebook 广告指标,它将作为服务器上的一项长期 运行 服务定期执行,无需用户输入,但我似乎找不到获得令牌的方法。

从 facebook PHP Api 获取访问令牌的所有程序似乎都假设用户在那里登录 facebook。我快速查看是否可以使用 curl 手动连接,但是在 facebook 登录过程中有一些 js 生成的变量,所以这会使事情复杂化。

有没有什么方法可以仅通过一个应用 id/secret 获得营销 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);

但是我得到一个错误"Cannot determine the target object for this request. Currently supported objects include ad account, business account and associated objects."

App ID和App Secret只能获取一个App Access Token。与那个用户没有任何关系,因此 Facebook 无法知道您是否被允许访问营销 API 或见解:

To access the Marketing API you need a user access token having the permissions ads_management or ads_read

来源:https://developers.facebook.com/docs/marketing-api/quickstart#access-token

您可以使用和存储有效期为 60 天的扩展用户令牌。

有关令牌及其扩展方式的更多信息:

您可以访问 Business Manager? You can generate a System User there which comes with a non-expiring token. See here.