0

現在,我已經升級到"facebook/php-ads-sdk": "2.8.*"https://github.com/facebook/facebook-php-ads-sdk),我的這個功能不工作了:如何使用的createUser在Facebook的廣告(以取代過時的ADDUSERS)

public function addToCustomAudience($entriesArray, $audienceId, $inputType = CustomAudienceTypes::EMAIL) { 
    $audience = new CustomAudience($audienceId); 
    $result = $audience->addUsers($entriesArray, $inputType); 
    return $result; 
} 

顯然addUsers不再可用。

我看到一個createUser函數,但它看起來很不一樣,並且沒有關於如何從addUserscreateUser遷移的文檔。

我想要做的事很簡單。

給定一組電子郵件地址和一個觀衆ID,如何將所有這些電子郵件地址添加到該Facebook自定義Audience?

回答

0

從我在代碼中可以看到的,addUsers仍然存在,並且它在開發者網站上有記錄。

我只是用最新的SDK用下面的代碼一起更新觀衆:

use FacebookAds\Object\CustomAudience; 
use FacebookAds\Object\Values\CustomAudienceTypes; 

$emails = array(
    '[email protected]', 
    '[email protected]', 
    '[email protected]', 
); 

$audience = new CustomAudience(<CUSTOM_AUDIENCE_ID>); 

$audience->addUsers($emails, CustomAudienceTypes::EMAIL); 
+0

你可以看到ADDUSERS存在回到2016年10月5日,但被標記爲 「過時」 (https://github.com/facebook/facebook-php-ads-sdk/blob/ad5da8006abc9c3498b60b059b4e11285ca5eff1/src/ FacebookAds/Object/CustomAudience.php#L352) 以及最近的提交(https://github.com/facebook/facebook-php-ads-sdk/blob/d51193b19d730ae9274d45540986e1ac311b074d/src/FacebookAds/Object/CustomAudience.php#L363 )它消失了。 – Ryan

+0

啊這很奇怪,讓我找出新的方法來做到這一點。 –

+0

看起來我們在這裏介紹了一個錯誤,我們正在修復此問題,希望我們今天能夠解決此問題。 –

0

這似乎爲我的目的工作。

我從facebook-php-ads-sdk複製了一些代碼作爲解決方法。

$audience = new CustomAudience($audienceId); 
$params = $this->formatParams($entriesArray, $inputType, [], false); 
$audience->createUser([], $params, false); 


/** 
* Copied this from Facebook's https://github.com/facebook/facebook-php-ads-sdk/blob/d51193b19d730ae9274d45540986e1ac311b074d/src/FacebookAds/Object/CustomAudience.php#L363 
* Take users and format them correctly for the request 
* 
* @param array $users 
* @param string $type 
* @param array $app_ids 
* @param bool $is_hashed 
* @return array 
*/ 
protected function formatParams(array $users, $type, array $app_ids = array(), $is_hashed = false) { 
    if ($type == CustomAudienceTypes::EMAIL || $type == CustomAudienceTypes::PHONE) { 
     $normalizer = new EmailNormalizer(); 
     $hash_normalizer = new HashNormalizer(); 
     foreach ($users as &$user) { 
      if ($type == CustomAudienceTypes::EMAIL) { 
       $user = $normalizer->normalize(CustomAudienceTypes::EMAIL, $user); 
      } 
      if (!$is_hashed) { 
       $user = $hash_normalizer->normalize(
         CustomAudienceTypes::EMAIL, $user); 
      } 
     } 
    } 
    $payload = array(
     'schema' => $type, 
     'data' => $users, 
    ); 
    if ($type === CustomAudienceTypes::ID) { 
     if (empty($app_ids)) { 
      throw new \InvalidArgumentException(
      "Custom audiences with type " . CustomAudienceTypes::ID . " require" 
      . "at least one app_id"); 
     } 
     $payload['app_ids'] = $app_ids; 
    } 
    return array('payload' => $payload); 
} 
相關問題