【问题标题】:How to use Facebook graph API to retrieve fan photos uploaded to wall of fan page?如何使用 Facebook 图形 API 检索上传到粉丝页面墙的粉丝照片?
【发布时间】:2011-02-22 20:20:43
【问题描述】:

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

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

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

另一个注意事项:我接近检索此数据的唯一方法是使用“提要”选项。即: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 不允许自己出现在这些数据中,只要你“以你自己”而不是作为页面发布它。

【问题讨论】:

    标签: php html facebook facebook-graph-api facebook-fql


    【解决方案1】:

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

    【讨论】:

    • 这只会检索页面管理员上传的照片...我正在尝试检索粉丝上传到我们墙上的照片...
    • 越来越近,我相信我将不得不针对流。我只需要弄清楚如何从查询中只检索照片:SELECT attachment photo FROM stream WHERE source_id=116860675007039 目前这会提取所有附件(例如视频等)。
    • @Joe:是的,刚刚发布了相同的内容! :-)
    • 我现在几乎可以闻到它了。 ;) 你能帮忙只定位照片吗?我试图使用 filter_key 但我无法让它工作
    • 这基本上得到相同的查询:graph.facebook.com/<insertpageID>/tagged 但我不知道如何强制它只拉照片帖子(而不是视频)
    【解决方案2】:

    试试这个 FQL:

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

    filter_key="others" - 这将过滤来自其他所有人的帖子,但不会过滤来自管理员的帖子 type="" - 这将过滤掉 cmets,所以会给你留下照片(可能是视频和其他强烈的东西,但删除文本帖子会大大减少结果)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-08-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-23
      • 2010-11-25
      相关资源
      最近更新 更多