Как использовать API графа Facebook для получения фанатских фотографий, загруженных на стену фан-страницы? - PullRequest
6 голосов
/ 22 февраля 2011

Я создаю внешнюю фотогалерею, используя PHP и API графа Facebook.Он вытягивает эскизы, а также большое изображение из альбомов на нашей фан-странице Facebook.

Все отлично работает, за исключением того, что я могу только получать фотографии, которые ADMIN публикует на нашей странице.(graph.facebook.com/myalbumid/photos) Есть ли способ использовать Graph API для загрузки публично загруженных фотографий от фанатов?

Я хочу получить фотографии из альбома "Фотографии из", но пытаюсьполучить идентификатор для запроса графика не так, как в других альбомах ... это выглядит так: http://www.facebook.com/media/set/?set=o.116860675007039

Еще одно примечание. Единственный способ приблизиться к получению этих данных - использовать "фид""option .. ie: graph.facebook.com/pageid/feed

РЕДАКТИРОВАТЬ: Это примерно, насколько я мог, это работает, но есть некоторые проблемы, изложенные ниже.Может быть, кто-то может расширить это или предоставить лучшее решение.(Использование FB PHP SDK)

<?php
require_once ('config.php');
// get all photos for album
$photos = $facebook->api("/YourID/tagged");
$maxitem =10;
$count = 0;
foreach($photos['data'] as $photo) {
    if ($photo['type'] == "photo"):
        echo "<img src='{$photo['picture']}' />", "<br />";
    endif;
    $count+= 1;
    if ($count >= "$maxitem") break;
}
?>

Проблемы с этим:

1) Тот факт, что я не знаю метода для графа, запрашивающего определенные «типы» тегов, мне пришлосьзапустите условный оператор для отображения фотографий.

2) Вы не можете эффективно использовать «? limit = #» с этим, потому что, как я уже сказал, «помеченный» запрос содержит все типы (фото, видео и статус),Поэтому, если вы собираетесь создать фотогалерею и хотите избежать выполнения всего запроса с помощью? Limit, вы потеряете изображения.

3) Единственный контент, который отображается в запросе с тегами, - это людикоторые не являются администраторами страницы.Это не конец света, но я не понимаю, почему Facebook не позволил бы показывать себя в этих данных, если вы разместили их «как вы», а не как страница.

Ответы [ 2 ]

3 голосов
/ 23 февраля 2011

Вам нужно извлечь все альбомы, а затем получить все фотографии.Это можно легко сделать, используя FQL:

SELECT pid,owner,src_small,src_big 
FROM photo 
WHERE aid IN (
    SELECT aid 
    FROM album 
    WHERE owner = your_page_id
)

РЕДАКТИРОВАТЬ:
Также вам нужно запросить таблицу потоков, чтобы получить сообщения на стене, затем проверьте, есть ли у вас вложения итип вложения:

SELECT attachment
FROM stream 
WHERE source_id = 116860675007039

Результат:

[
  {
    "attachment": {
      "media": [
        {
          "href": "http://www.facebook.com/photo.php?fbid=1801693052786&set=o.116860675007039",
          "alt": "test",
          "type": "photo",
          "src": "http://photos-f.ak.fbcdn.net/hphotos-ak-snc6/185861_1801693052786_1553635161_1863491_4978966_s.jpg",
          "photo": {
            "aid": "6672812206410774346",
            "pid": "6672812206412558147",
            "fbid": 1801693052786,
            "owner": 1553635161,
            "index": 11,
            "width": 246,
            "height": 198
          }
        }
      ],
      "name": "",
      "caption": "",
      "description": "",
      "properties": [],
      "icon": "http://b.static.ak.fbcdn.net/rsrc.php/v1/yz/r/StEh3RhPvjk.gif",
      "fb_object_type": "photo",
      "fb_object_id": "6672812206412558147"
    }
  },
  {
    "attachment": {
      "description": ""
    }
  },
...etc
]
0 голосов
/ 22 марта 2012

попробуйте этот FQL:

SELECT message,attachment,comments
FROM stream
WHERE source_id=YOUR_PAGE_ID AND filter_key="others" AND type=""

filter_key = "others" - это отфильтрует сообщения от всех остальных, но не от Admin type = "" - это отфильтрует комментарии, так что оставит вас сфотографии (возможно, видео и другие интересные вещи, но удаление текстовых сообщений значительно уменьшит результат)

...