1

С помощью Facebook мне нужно знать, кто (какой пользователь) прокомментировал сообщение на facebook-странице. Я делаю два запроса с facebook-пакетными запросами в моем javascript-файле, первый для всех сообщений и со вторым, я хочу запросы каждого сообщения. Приятно иметь, если я могу выбрать только сообщения, которые имеют некоторые комментарии.facebook пакетный запрос с jsonpath

FB.api('/', 'POST', { 
    batch: [ 
    { 
    // all posts from page from last year 
    'method': 'GET', 
    'name': 'posts_page_year', 
    'omit_response_on_success': false, 
    'relative_url': fbPageID + '/posts?since=2012-01-01&until=' + timeNow + '&limit=200000' 
    }, 
    { 
    // all post-ids from last year 
    'method': 'GET', 
    "relative_url": "/{result=posts_page_year:$.data.*.id[?(@.comments.count!=0)]}" 
    } 
] 
}, function(response) { 
    callback(response); 
} 
); 

Моя проблема - второй пакетный запрос, он возвращает ошибку (# 803). Я попробовал немного.

{ 
    // all post-ids from last year 
    'method': 'GET', 
    "relative_url": "/{result=posts_page_year:$.data.0.id}" 
} 

возвращает объект с первым почтовым отправлением. Все в порядке. Но я хочу, чтобы это из каждого Поста, а не только из первого.

{ 
    // all post-ids from last year 
    'method': 'GET', 
    "relative_url": "/{result=posts_page_year:$.data.*.id}" 
} 

возвращает ошибку (# 803) Некоторые из псевдонимов вы просили не существует и список всех идентификаторов.

{ 
    // all post-ids from last year 
    'method': 'GET', 
    "relative_url": "/{result=posts_page_year:$.data.*.id[?(@.comments.count!=0)]}" 
} 

возвращает эту ошибку: (# 803) Некоторые из псевдонимов вы просили не существует: {результат = posts_page_year:... $ Данных * идентификатор [

Я попробовал почти все, и необходимость ваша помощь вызывает я не знаю, как решить проблему. СПАСИБО!

+0

Я решил проблему. Но на данный момент я не могу вспомнить - это давно. Если кто-то заинтересован в решении, добавьте комментарий. – btemperli

+0

Здравствуйте, меня интересует решение :) – Morti

+0

Привет @Morti, вы можете прочитать это решение в моем [ниже] (http://stackoverflow.com/a/26582946/2241151). – btemperli

ответ

0

В Facebook batch documentation, говорится:

Note that for security reasons filter and script JSONPath constructs are not allowed in the JSONPath expression.

Это, вероятно, означает, что вы не можете использовать код как ?(@.comments.count!=0)

0
FB.api('/', 'POST', { 
    batch: [ 
    { 
     // 0: all likes from user 
     'method': 'GET', 
     'relative_url': 'me/likes' 
    }, 
    { 
     // 1: all user-posts from last month 
     'method': 'GET', 
     'relative_url': 'me/posts?since=' + timeMonthAgo + '&until=' + timeNow + '&limit=200000' 
    }, 
    { 
     // 2: all user-posts from last year 
     'method': 'GET', 
     'relative_url': 'me/posts?since=' + timeYearAgo + '&until=' + timeNow + '&limit=200000' 
    } 
    ] 
    }, function (response) { 
    callback(response); 
    } 
); 

Я должен был установить предел, так что каждый ответ сейчас предел содержания. Можно установить предел на невозможное большое количество. Вы также должны установить временной диапазон с параметрами since и until.

Я надеюсь, что это поможет кому-то.

 Смежные вопросы

  • Нет связанных вопросов^_^