Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/facebook/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Facebook营销API产品受众不';不要保存一些值_Php_Facebook_Api_Methods - Fatal编程技术网

Php Facebook营销API产品受众不';不要保存一些值

Php Facebook营销API产品受众不';不要保存一些值,php,facebook,api,methods,Php,Facebook,Api,Methods,我面临以下问题: 我创建一个像素(在项目中使用:ViewProduct、AddToBasket&Purchase) 创建目录+创建产品提要+创建产品集 实现ProductAudience以在Facebook上创建受众 在那之前,一切都很好,但是当我去Facebook,导航到产品受众时,它没有我在创建受众时设置的任何数据。(例如,未设置像素标识、产品集合标识、包含和排除) 我的代码就是这样的: use FacebookAds\Object\ProductAudience; use

我面临以下问题:

  • 我创建一个像素(在项目中使用:ViewProduct、AddToBasket&Purchase)
  • 创建目录+创建产品提要+创建产品集
  • 实现ProductAudience以在Facebook上创建受众
  • 在那之前,一切都很好,但是当我去Facebook,导航到产品受众时,它没有我在创建受众时设置的任何数据。(例如,未设置像素标识、产品集合标识、包含和排除)

    我的代码就是这样的:

        use FacebookAds\Object\ProductAudience;
        use FacebookAds\Object\Fields\ProductAudienceFields;
    
        $productAudience = new ProductAudience($this->id, <myFacebookAdAccountId>);
        $audienceData = [
            ProductAudienceFields::PIXEL_ID => <myPixelId>,
            ProductAudienceFields::PRODUCT_SET_ID => <myProductSetId>,
            ProductAudienceFields::NAME => 'Name for the audience',
        ];
        if (count($this->inclusions)) $audienceData[ProductAudienceFields::INCLUSIONS] = $this->inclusions;
        if (count($this->exclusions)) $audienceData[ProductAudienceFields::EXCLUSIONS] = $this->exclusions;
        $productAudience->setData($audienceData);
        return $productAudience->create();
    
    已返回以下对象:

    #data: array:7 [
        "id" => "6047126484024"
        "name" => "Name for the audience"
        "description" => null
        "product_set_id" => null
        "pixel_id" => null
        "inclusions" => null
        "exclusions" => null
    ]
    

    这些值也设置为null。。。我使用的API版本是2.5.0,找到了问题的解决方案

    $productAudience = new ProductAudience($this->id);
    $productAudience->read([
        ProductAudienceFields::PIXEL_ID,
        ProductAudienceFields::NAME,
        ProductAudienceFields::DESCRIPTION,
        'data_source',
    ]);
    
    它没有设置值,因此product_set_id和其他几个字段仍然设置为null,但我们得到了“creation_params”对象中的所有字段

    我还创建了一个帮助器函数,用于设置所需的值:

    private function fieldsFromDataSourceToObject(ProductAudience &$productAudience)
    {
        $creationParams = json_decode($productAudience->data_source['creation_params']);
        $productAudience->setData([
            ProductAudienceFields::PRODUCT_SET_ID => $creationParams->product_set_id,
            ProductAudienceFields::INCLUSIONS => json_decode($creationParams->inclusions, true),
            ProductAudienceFields::EXCLUSIONS => json_decode($creationParams->exclusions, true),
        ]);
    }
    
    所以在阅读了现有的产品受众之后,我只调用helper函数,其响应为param

    $this->fieldsFromDataSourceToObject($productAudience);
    

    希望这个解决方案能节省一些人的时间。

    找到了解决我问题的方法

    $productAudience = new ProductAudience($this->id);
    $productAudience->read([
        ProductAudienceFields::PIXEL_ID,
        ProductAudienceFields::NAME,
        ProductAudienceFields::DESCRIPTION,
        'data_source',
    ]);
    
    它没有设置值,因此product_set_id和其他几个字段仍然设置为null,但我们得到了“creation_params”对象中的所有字段

    我还创建了一个帮助器函数,用于设置所需的值:

    private function fieldsFromDataSourceToObject(ProductAudience &$productAudience)
    {
        $creationParams = json_decode($productAudience->data_source['creation_params']);
        $productAudience->setData([
            ProductAudienceFields::PRODUCT_SET_ID => $creationParams->product_set_id,
            ProductAudienceFields::INCLUSIONS => json_decode($creationParams->inclusions, true),
            ProductAudienceFields::EXCLUSIONS => json_decode($creationParams->exclusions, true),
        ]);
    }
    
    所以在阅读了现有的产品受众之后,我只调用helper函数,其响应为param

    $this->fieldsFromDataSourceToObject($productAudience);
    
    希望这个解决方案能节省一些人的时间