fql.multiquery, возвращающий пустой массив - PullRequest
0 голосов
/ 29 декабря 2011

Я пытаюсь запросить все фотоальбомы страницы и получить обложку каждого альбома.Ниже приведен код, который возвращает пустой результат.

Я могу выполнить оба запроса по отдельности без проблем, поэтому это не проблема с разрешениями.

$album_fql = "SELECT aid, owner, name, object_id, cover_pid, cover_object_id 
              FROM album
              WHERE owner = 'xxxxxxx'";

$albumpic_fql = "SELECT pid, src_small
                 FROM photo 
                 WHERE pid IN (SELECT cover_pid FROM #query1)";

$album_param = array(
                 'method'    => 'fql.multiquery',
                 'queries'   => '{"query1":"' . $album_fql . '", "query2":"' . $albumpic_fql . '"}');

$album_fqlResult = $facebook->api($album_param);

print_r($album_fqlResult);

Есть идеи?

Ответы [ 2 ]

1 голос
/ 30 декабря 2011

Наконец-то разобрался.Мне пришлось объединить запросы в 1 переменную и экранировать одинарные кавычки.

    $queries = '{

"query1" : "SELECT aid, name, cover_pid FROM album WHERE owner = \'xxxxxxxxxxx\'",

"query2" : "SELECT aid, images FROM photo WHERE pid IN (SELECT cover_pid FROM #query1)"

}';
1 голос
/ 30 декабря 2011

вы можете сделать это во вложенном запросе, а не как мультизапрос.

SELECT pid, src_small 
FROM photo 
WHERE pid in (SELECT cover_pid FROM album where owner={page id here})

например, вот список обложек альбомов, которые я получил со страницы CocaCola в Facebook

SELECT pid, src_small 
FROM photo 
WHERE pid in (SELECT cover_pid FROM album where owner=40796308305)
LIMIT 5

возвращено:

{
  "data": [
    {
      "pid": "40796308305_2143765",
      "object_id": 110516463305,
      "src_small": "https://fbcdn-photos-a.akamaihd.net/hphotos-ak-snc1/6570_110516463305_40796308305_2143765_6253354_t.jpg"
    },
    {
      "pid": "40796308305_8753877",
      "object_id": "10150500888203306",
      "src_small": "https://fbcdn-photos-a.akamaihd.net/hphotos-ak-ash4/398389_10150500888203306_40796308305_8753877_1814220329_t.jpg"
    },
    {
      "pid": "40796308305_8751674",
      "object_id": "10150500434253306",
      "src_small": "https://fbcdn-photos-a.akamaihd.net/hphotos-ak-ash4/407475_10150500434253306_40796308305_8751674_1040781388_t.jpg"
    },
    {
      "pid": "40796308305_8742570",
      "object_id": "10150498588158306",
      "src_small": "https://fbcdn-photos-a.akamaihd.net/hphotos-ak-ash4/396541_10150498588158306_40796308305_8742570_1378170213_t.jpg"
    },
    {
      "pid": "40796308305_8742259",
      "object_id": "10150498546173306",
      "src_small": "https://fbcdn-photos-a.akamaihd.net/hphotos-ak-snc7/402667_10150498546173306_40796308305_8742259_287537096_t.jpg"
    }
  ]
}

Если вы хотите попробовать свой мультизапрос, попробуйте присвоить именам запросы, начинающиеся с индекса 0 вместо 1. Например, query0 и query1 Это единственный способ, который позволяет C # SDK, возможно,php SDK тоже требует этого.

...