2
votes

I'm currently creating a server CLI application retrieving facebook Ads metrics through the Marketing API, it would be done as a long running service on the server doing so periodically without user input, but I can't seem to find a way to get a token for doing so.

All procedures to get an access token from facebook PHP Api seem to assume a user is there to login to facebook. I looked quickly to see if I could connect manually with curl but there is some js generated variables in the facebook login process, so that would complicate things.

Is there any way to get Marketing API insight with only an app id/secret ? Or is it possible to retrieve an access token without user input ?

The closest I've been is this :

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);

But I get an error "Cannot determine the target object for this request. Currently supported objects include ad account, business account and associated objects."

2

2 Answers

3
votes

Do you have access to Business Manager? You can generate a System User there which comes with a non-expiring token. See here.

2
votes

With App ID and App Secret, you can only get an App Access Token. There is no relation to any User with that one, so there is no way for Facebook to know if you are allowed to have access to the Marketing API or Insights:

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

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

You can use and store an Extended User Token that is valid for 60 days.

More information about Tokens and how to extend them: