facebook/php-business-sdk
Official Facebook Business SDK for PHP. Access Marketing API plus Pages, Business Manager, Instagram and more via one maintained library. Includes authentication/token usage and objects to create, read, update and manage business assets and ads.
Installation:
composer require facebook/php-business-sdk
Requires PHP 8.0+.
Initialize SDK:
use FacebookAds\Api;
Api::init($appId, $appSecret, $accessToken);
$api = Api::instance();
First Use Case: Fetch an ad account:
use FacebookAds\Object\AdAccount;
$account = (new AdAccount($accountId))->getSelf();
echo $account->name;
FacebookAds/Object/Fields/ for enum-like field names.test/ directory for integration patterns.CRUD Operations:
createAdSet(), createAd(), etc., with required fields.
$adSet = $account->createAdSet([], [
AdSetFields::NAME => 'Test AdSet',
AdSetFields::DAILY_BUDGET => 100,
]);
$campaigns = $account->getCampaigns([CampaignFields::ID, CampaignFields::NAME]);
updateSelf().
$adSet->updateSelf([], [AdSetFields::NAME => 'Updated Name']);
deleteSelf().Pagination with Cursors:
foreach ($cursor as $campaign) {
echo $campaign->{CampaignFields::NAME};
}
$cursor->setUseImplicitFetch(true);
Conversions API:
$batchProcessor = new BatchProcessor($api);
$batchProcessor->addEvent($eventRequest);
$batchProcessor->send();
$eventRequestAsync = new EventRequestAsync($api, $eventRequest);
$eventRequestAsync->send();
public function register()
{
$this->app->singleton(Api::class, function () {
return Api::instance();
});
}
.env and load them dynamically:
Api::init(
env('FACEBOOK_APP_ID'),
env('FACEBOOK_APP_SECRET'),
env('FACEBOOK_ACCESS_TOKEN')
);
$api->setLogger(new CurlLogger());
Access Tokens:
encrypter) and avoid hardcoding.Field Selection:
$account->getSelf([AdAccountFields::ID, AdAccountFields::NAME]);
Implicit Fetching:
Conversions API:
Deprecations:
$api->setLogger(new CurlLogger());
FacebookAds\Exceptions\FacebookAdsException for API errors:
try {
$account->getSelf();
} catch (FacebookAdsException $e) {
log::error($e->getMessage());
log::debug($e->getHeaders());
}
$api->setHttpClient(new CustomHttpClient());
FacebookAds\Object\AbstractObject to add custom validation logic before API calls.$appSecretProof = hash_hmac('sha256', $accessToken, $appSecret);
$pixel->setDataProcessingOptions(['business_verification' => true]);
How can I help you explore Laravel packages today?