/**
  * @depends testCustomAudiences
  */
 public function testAppIdsPayload()
 {
     $ca = new CustomAudience(null, $this->getActId());
     $ca->{CustomAudienceFields::NAME} = $this->getTestRunId();
     $ca->create();
     $users = array($this->getApi()->call('/me')->getContent()['id']);
     $add = $ca->addUsers($users, CustomAudienceTypes::ID, array($this->getAppId()));
     $this->assertClusterChangesResponse($ca, $users, $add);
     $remove = $ca->removeUsers($users, CustomAudienceTypes::ID, array($this->getAppId()));
     $this->assertClusterChangesResponse($ca, $users, $remove);
     $optout = $ca->optOutUsers($users, CustomAudienceTypes::ID, array($this->getAppId()));
     $this->assertSuccessResponse($optout);
     $ca->delete();
 }
// should begin with "act_" (eg: $account_id = 'act_1234567890';)
$account_id = null;
// Configurations - End
if (is_null($access_token) || is_null($app_id) || is_null($app_secret)) {
    throw new \Exception('You must set your access token, app id and app secret before executing');
}
if (is_null($account_id)) {
    throw new \Exception('You must set your account id before executing');
}
define('SDK_DIR', __DIR__ . '/..');
// Path to the SDK directory
$loader = (include SDK_DIR . '/vendor/autoload.php');
use FacebookAds\Api;
Api::init($app_id, $app_secret, $access_token);
// use the namespace for Custom Audiences and Fields
use FacebookAds\Object\CustomAudience;
use FacebookAds\Object\Fields\CustomAudienceFields;
use FacebookAds\Object\Values\CustomAudienceTypes;
// Create a custom audience object, setting the parent to be the account id
$audience = new CustomAudience(null, $account_id);
$audience->setData(array(CustomAudienceFields::NAME => 'My Custom Audiece', CustomAudienceFields::DESCRIPTION => 'Lots of people'));
// Create the audience
$audience->create();
echo "Audience ID: " . $audience->id . "\n";
// Assuming you have an array of emails:
// NOTE: The SDK will hash (SHA-2) your data before submitting
// it to Facebook servers
$emails = array('*****@*****.**', '*****@*****.**', '*****@*****.**', '*****@*****.**');
$audience->addUsers($emails, CustomAudienceTypes::EMAIL);
$audience->read(array(CustomAudienceFields::APPROXIMATE_COUNT));
echo "Estimated Size:" . $audience->{CustomAudienceFields::APPROXIMATE_COUNT} . "\n";
// _DOC close [CUSTOM_AUDIENCE_UPDATE_OPTOUT]
$audience->delete();
$audience = new CustomAudience(null, $ad_account_id);
$audience->setData(array(CustomAudienceFields::NAME => 'My new CA', CustomAUdienceFields::DESCRIPTION => 'Docsmith', CustomAudienceFields::SUBTYPE => CustomAudienceSubtypes::CUSTOM));
$audience->create();
$custom_audience_id = $audience->{CustomAudienceFields::ID};
$user_id_1 = 1234;
$user_id_2 = 12345;
// _DOC open [CUSTOM_AUDIENCE_USERS_ADD_ID]
// _DOC vars [custom_audience_id:s, application_id, user_id_1, user_id_2]
// use FacebookAds\Object\CustomAudience;
// use FacebookAds\Object\Fields\CustomAudienceFields;
// use FacebookAds\Object\Values\CustomAudienceTypes;
// Add Facebook IDs of users of certain applications
$audience = new CustomAudience($custom_audience_id);
$audience->addUsers(array($user_id_1, $user_id_2), CustomAudienceTypes::ID, array($application_id));
// _DOC close [CUSTOM_AUDIENCE_USERS_ADD_ID]
$audience->delete();
$account = new AdAccount($ad_account_id);
$pixels = $account->getAdsPixels(array(AdsPixelsFields::CODE));
if (!$pixels->count()) {
    $pixel = new AdsPixel(null, $ad_account_id);
    $pixel->{AdsPixelsFields::NAME} = 'My WCA Pixel';
    $pixel->create();
} else {
    $pixel = $pixels->current();
}
$pixel_id = $pixel->{AdsPixelsFields::ID};
// _DOC open [CUSTOM_AUDIENCE_CREATE_WCA]
// _DOC vars [ad_account_id:s, pixel_id]
// use FacebookAds\Object\CustomAudience;