2013-02-14 3 views
4

У меня проблемы с возвратом с помощью API-графа, и мне интересно, знает ли кто, почему и как я могу это исправить.Facebook Graph/Fql: Получить все фото

Мне нужно загрузить все данные фотографии для данного пользователя (данные друга, а не активный пользователь). Вот две вещи, которые я пробовал.

FQL: "select pid from photo where subject=friend_uid" 
Graph: "friend_uid/photos?fields=picture,created_time,tags.fields(name,id)&limit=1000" 

У меня есть права users_photos и user_photos.

Любые пользователи с тегами> 1000 будут иметь резко уменьшенные номера результатов. Например, он будет возвращать только около 200 фотографий или так что не является приемлемым, мне нужно все из них

Чанкинг с так как/до (или created_time < или> __), а также предельные положения только не улучшает подсчет результата с FQL, но количество chunking делает его ОЧЕНЬ неэффективным.

Любые идеи? Данные тегов также важны для моих целей.

Итак, мне нужен правильный запрос или последовательность запросов, чтобы получить ВСЕ данные тега для всех фотографий данного user_id, используя либо FQL, либо graph-api.

+0

Что вам нужно и в чем проблема? –

ответ

3

Недавно я создал аналогичный проект (поместил все фотографии со всех ваших друзей в Facebook) в PHP. Ограничения Facebook плохо документированы, но я обнаружил, что с помощью Graph API это 400 фотографий, на которые помечен друг, и 5000 фотографий, отправленных друг другу за запрос. Обратите внимание, что при удалении с {user}/photos только те фотографии, в которые они помечены, а {user}/photos/uploaded только вытягивает фотографии, которые {пользователь} загружен. Я подумал, что для моей ситуации было достаточно 400 отмеченных и 5000 загруженных фотографий.

Если вам нужны дополнительные фотографии, вам нужно будет проверить количество возвращенных фотографий для пользователя для запроса/photos и проверить, равно ли оно 400. Если это так, вам нужно перейти к следующей странице , рекурсивно.

Для использования/фотографии/загруженного запроса Facebook использует разбивку на основе курсора (см. Нижнюю часть this page), что означает, что страницы с разбивкой по страницам -> следующая и pagination-> prev отправляются только тогда, когда возвращается больше значений. Это позволяет легко получить следующую страницу (еще раз вам придется делать это рекурсивно).

+0

Я ценю ответ. Для пользователя/фотографий он использует временную разбивку на страницы. Последняя строка гласит: https://graph.facebook.com/frienduid/photos?fields=source,tags.fields(name,id)&limit=5000&type=tagged&until=1190408747 - но когда я следую этой ссылке, она всегда пуста (и у пользователя определенно более 400 тегов) - любые идеи о том, как пройти 400? – JoshDG

+0

Вы не указали свой токен доступа? Если вы не указали параметр «access_token» в URL-адресе, он будет вытаскивать только фотографии _public_, на которые помечен пользователь, что, вероятно, значительно меньше 400. –

+0

Сейчас я просто использую API-интерфейс Graph API для его проверки , поэтому он автоматически включает токен, а затем я пытаюсь следовать за страницей внизу. (Я попытался добавить в токен, а на всякий случай ... но это не сработало ... в любом случае, что первая страница возвращает 400 значений, но, судя по всему, это произошло до 400-го) – JoshDG

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