Facebook Ads API — как добавить несколько правил в API-вызов пользовательской аудитории в PHP

Я пытаюсь добавить 2 правила к вызову API, как показано ниже:

$parameters     =       "name=TEST-Registered-CA&";
$parameters     .=      "subtype=WEBSITE&";
$parameters     .=      "retention_days=180&";
$parameters     .=      'rule={"and":[{"url":{"i_contains":"thankyou.asp"}},{"url":{"i_contains":"HotelVenueState=CA"}}]}';

https://graph.facebook.com/v2.2/act_12345/customaudiences?access_token=123456&$parameters;

Когда я пытаюсь запустить выше в Facebook Graph Explorer, он выдает следующую ошибку: «(# 2654) Недопустимый JSON для правила: Предоставленная строка для правила недействительна JSON» URL-адрес ссылки (введите здесь описание ссылки

Может ли кто-нибудь сказать мне, что я делаю неправильно с json?


person Naveed Metlo    schedule 23.03.2015    source источник


Ответы (2)


Вы должны убедиться, что вы всегда правильно URL-кодируете параметры запроса. Создание URL-адреса вручную путем объединения строк часто приводит к неправильному анализу URL-адресов.

Вот как вы можете создать URL-адрес выше:

<?php

$parameters = array(
  'access_token' => '123456',
  'name' => 'TEST-Registered-CA',
  'subtype' => 'WEBSITE',
  'retention_days' => '180',
  'rule' => '{"and":[{"url":{"i_contains":"thankyou.asp"}},{"url":{"i_contains":"HotelVenueState=CA"}}]}'
);

$url = 'https://graph.facebook.com/v2.2/act_12345/customaudiences?'.http_build_query($parameters, null, '&');
person daviddoran    schedule 30.03.2015
comment
Спасибо Дэвиду за вашу помощь, но это была другая проблема, и это была даже ошибка, и я спросил напрямую у разработчиков facebook, и они сказали мне точное решение для этого, на которое я вскоре отвечу сам. - person Naveed Metlo; 30.03.2015
comment
Спасибо за новость, Навид. Мне самому было бы интересно посмотреть, какое решение было. - person daviddoran; 31.03.2015
comment
Дэвид, я разместил решение, и вы можете попробовать его, и оно точно сработает. - person Naveed Metlo; 31.03.2015

В недавнем обновлении в facebook v2.3 они добавили еще один параметр с этими вызовами, который (метод = сообщение), и когда я добавил это, и это сработало для меня. поэтому код должен быть таким

$parameters     =       "method=post&";
$parameters     =       "name=TEST-Registered-CA&";
$parameters     .=      "subtype=WEBSITE&";
$parameters     .=      "retention_days=180&";
$parameters     .=      'rule={"and":[{"url":{"i_contains":"thankyou.asp"}},{"url":{"i_contains":"HotelVenueState=CA"}}]}';

https://graph.facebook.com/v2.2/act_12345/customaudiences?access_token=123456&$parameters;
person Naveed Metlo    schedule 31.03.2015