2015-09-30 4 views
1

У меня есть токен доступа для страницы на Facebook. Я могу просмотреть фид этой страницы и отдельные сообщения в этом фиде. Но по какой-то причине я могу запросить только конечную точку /sharedposts для из них, используя v2.2 API-интерфейса Graph.Может ли доступ к sharedposts для некоторых объектов Graph API?

Токен доступа имеет характеристики user_posts и read_stream. Когда я запрашиваю поле shares, я могу видеть более одного сообщения с общими, но когда я запрашиваю [POST_ID]/sharedposts для некоторых из них, я просто получаю пустой массив data в ответ.

Почему это? Есть ли какие-то ошибки, о которых я должен знать? Это разочаровывает то, что край /sharedposts будет возвращать возвраты для некоторых сообщений, но не другие, используя тот же токен доступа и версию API.

ответ

0

Это ошибка, которая все еще кажется нерешенной.

В принципе, он должен работать так, как вы ожидали, но даже со всеми необходимыми разрешениями (и даже для публичных сообщений) он не возвращает объект с каждой из акций.

Вы, вероятно, хотите, чтобы подписаться на ошибку здесь, чтобы заметить, как только она была решена:

https://developers.facebook.com/bugs/1404733043148335/

0

Я просто разместил мои прозрения/обходной путь для этой ошибки в сообщении об ошибке, что lars.schwarz связанного к, но я также вложу его сюда:

/sharedposts будет получать только публичные сообщения или сообщения от пользователей, предоставивших доступ к вашему приложению. ОДНАКО, конечная точка, похоже, не запрашивает это разумно. Я не уверен, но я думаю, что конечная точка имеет предел по умолчанию в 25 результатов. Что, по-видимому, происходит, так это то, что конечная точка запрашивает базу данных Facebook для 25 сообщений, а затем фильтры, установленные на основе разрешений вашего приложения.

Что это означает, что если последней доступной папкой для доступа к вашему приложению является 30 сообщений, конечная точка вернет пустой набор данных. Если вашему приложению разрешено иметь доступ к одному сообщению, которое составляет 15 глубин, а одно - 30 глубиной, оно будет возвращать только сообщение, которое составляет 15 глубин.

Чтобы обойти это, вы можете установить действительно высокий предел (я использовал 2000). Проблема в том, что если ваш пост имеет более 2000 акций, вы все равно пропустите что-то. К сожалению, вы не можете сделать ограничение безумно высоким, потому что конечная точка вернет ошибку, сообщающую вам запрашивать меньше данных (даже если запрос фактически вернет только несколько сообщений). Поэтому я устанавливаю предел 2000 и использую параметр «до», чтобы переходить через sharedposts в хронологическом порядке.

Надеюсь, это поможет разобраться. Это серьезная боль и несовершенное решение (хотя, на мой взгляд, это 99% выполненной работы). Я рекомендую всем сообщать об ошибке здесь: https://developers.facebook.com/bugs

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