This Ads API SDK is built to facilitate application development for Facebook Ads API.
The Facebook Ads API SDK requires PHP 5.4 or greater.
Facebook Ads API SDK uses composer to manage dependencies. You can follow this document to install composer.
Add the following to your composer.json
file:
{
"require": {
"facebook/php-ads-sdk": "*"
}
}
then install it through composer:
php composer.phar install --no-dev
This SDK and its dependencies will be installed under ./vendor
.
This repository is written following the psr-4 autoloading standard. Any psr-4 compatible autoloader can be used.
The FacebookAds\Api
object is the foundation of the Ads SDK which encapsulates a Facebook\FacebookSession
and is used to execute requests against the Graph API.
To instantiate an Api object you will need a valid access token:
use FacebookAds\Api;
use Facebook\FacebookSession;
// Set the default application information to be used with this session
FacebookSession::setDefaultApplication($app_id, $app_secret);
$session = new FacebookSession($access_token);
$api = new Api($session);
Once instantiated, the Api object will allow you to start making requests to the Ads API.
Due to the high number of field names in the Ads API existing objects, in order to facilitate your code maintainability, enum-like classes are provided.
These files are stored under the FacebookAds/Object/Fields
directory.
You can access object properties in the same manner you would usually do in php:
use FacebookAds\Object\AdAccount;
$account = new AdAccount();
$account->name = 'My account name';
echo $account->name;
or using the enums:
use FacebookAds\Object\AdAccount;
use FacebookAds\Object\Fields\AdAccountFields;
$account = new AdAccount();
$account->{AdAccountFields::NAME} = 'My account name';
echo $account->{AdAccountFields::NAME};
Facebook Ads entities are defined as classes under the FacebookAds/Object
directory.
use FacebookAds\Object\AdAccount;
$account = new AdAccount($account_id);
$account->read();
For some objects, the Ads API doesn't return all available fields by default. The first argument of the object's read method is an array of field names to be requested.
use FacebookAds\Object\AdAccount;
use FacebookAds\Object\Fields\AdAccountFields;
$fields = array(
AdAccountFields::ID,
AdAccountFields::NAME,
AdAccountFields::DAILY_SPEND_LIMIT,
);
$account = new AdAccount($account_id);
$account->read($fields);
Requesting an high number of fields my cause the response time to visibly increase, you should always request only the fields you really need.
use FacebookAds\Object\AdSet;
use FacebookAds\Object\Fields\AdSetFields;
$account_id = 'act_123123';
$campaign_group_id = '123456';
$set = new AdSet(null, $account_id);
$set->setData(array(
AdSetFields::NAME => 'My Test AdSet',
AdSetFields::CAMPAIGN_STATUS => AdSet::STATUS_PAUSED,
AdSetFields::CAMPAIGN_GROUP_ID => $campaign_group_id,
AdSetFields::DAILY_BUDGET => '150',
AdSetFields::START_TIME => (new \DateTime("+1 week"))->format(\DateTime::ISO8601),
AdSetFields::END_TIME => (new \DateTime("+2 week"))->format(\DateTime::ISO8601),
));
$set->create();
echo $set->id;
use FacebookAds\Object\AdSet;
use FacebookAds\Object\Fields\AdSetFields;
$ad_set_id = '123456';
$set = new AdSet($ad_set_id);
$set->{AdSetFields::NAME} = 'My new AdSet name';
$set->update();
use FacebookAds\Object\AdSet;
$ad_set_id = '123456';
$set = new AdSet($ad_set_id);
$set->delete();
The 'test' folder contains the test cases.
From the root folder run:
php composer.phar install
1 - Copy the config file template.
cp test/config.php.dist test/config.php
2 - Edit test/config.php
with your information.
./vendor/bin/phpunit -c test/
To run tests individually:
./vendor/bin/phpunit -c test/ path/to/class/file