Php 如何使用FacebookGraphAPI检索上传到粉丝页面墙上的粉丝照片?

Php 如何使用FacebookGraphAPI检索上传到粉丝页面墙上的粉丝照片?,php,html,facebook,facebook-graph-api,facebook-fql,Php,Html,Facebook,Facebook Graph Api,Facebook Fql,我正在使用PHP和Facebook图形API创建一个外部照片库。它从我们的Facebook粉丝页面上的相册中提取缩略图和大图 一切都很完美,除了我只能检索管理员发布到我们页面上的照片。graph.facebook.com/myalbumid/photos有没有一种方法可以使用graph api加载粉丝公开上传的照片 我想从相册中的照片中检索照片,但尝试获取图形查询的ID与其他相册不同。。。看起来是这样的:http://www.facebook.com/media/set/?set=o.11686

我正在使用PHP和Facebook图形API创建一个外部照片库。它从我们的Facebook粉丝页面上的相册中提取缩略图和大图

一切都很完美,除了我只能检索管理员发布到我们页面上的照片。graph.facebook.com/myalbumid/photos有没有一种方法可以使用graph api加载粉丝公开上传的照片

我想从相册中的照片中检索照片,但尝试获取图形查询的ID与其他相册不同。。。看起来是这样的:http://www.facebook.com/media/set/?set=o.116860675007039

另一个注意事项:我接近检索此数据的唯一方法是使用feed选项。。ie:graph.facebook.com/pageid/feed

编辑: 这是我所能做到的——它可以工作,但有一些问题如下所述。也许有人可以对此进行扩展,或者提供更好的解决方案。使用FBPHPSDK

<?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;
}
?>
这方面的问题:

我不知道用图形查询特定类型的标签的方法,所以我不得不运行一个条件语句来显示照片

2您不能有效地将?limit=用于此,因为正如我所说的,标记的查询包含所有类型的照片、视频和状态。因此,如果您想要一个照片库,并且希望通过使用?limit避免运行整个查询,那么您将丢失图像

3标记查询中显示的唯一内容来自非页面管理员的人员。这还不是世界末日,但我不明白Facebook为什么不允许你在这些数据中显示自己,只要你以自己而不是页面的身份发布

您需要检索所有相册,然后获取所有照片。这可以通过使用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
]
请尝试以下FQL:

SELECT message,attachment,comments
FROM stream
WHERE source_id=YOUR_PAGE_ID AND filter_key="others" AND type=""
filter_key=others-这将过滤来自其他人的帖子,但不会过滤来自管理员的帖子
type=-这将过滤掉评论,因此会留下照片、视频和其他内容,但删除文本帖子将大幅减少结果

这只检索页面管理员上传的照片。。。我正在尝试检索粉丝上传到我们墙上的照片……越来越近了,我相信我将不得不瞄准这条流。我只需要弄清楚如何从查询中仅检索照片:选择源代码为11680675007039的流中的附件照片。目前,这会提取所有附件,如视频等。@Joe:Yup刚刚发布了相同的内容!:-我现在几乎能闻到了;你能帮我只瞄准照片吗?我试图使用filter_键,但我无法让它工作这基本上得到相同的查询:但我不知道如何强制它只拉照片帖子而不是视频