2013-05-10 94 views
7

我正在使用Graph API來獲取粉絲頁面的牆貼。圖形API:檢索頁面Feed中的圖片尺寸

我注意到Facebook iOS應用程序本身能夠確定佔位符的確切比例。

​​

http://developers.facebook.com/tools/explorer?method=GET&path=facebook%2Ffeed%3Ffields%3Dpicture

{ 
    "data": [ 
      { 
      "picture": "http://photos-b.ak.fbcdn.net/hphotos-ak-frc1/247019_457846347622804_946521095_s.jpg", 
      "id": "20531316728_10151883063741729", 
      "created_time": "2013-05-02T16:57:25+0000" 
      }, 
       : 
       : 
       : 
      { 
      "picture": "http://photos-e.ak.fbcdn.net/hphotos-ak-ash4/223257_10151498310776729_930531604_s.jpg", 
      "id": "20531316728_10151498193061729", 
      "created_time": "2012-10-05T18:42:38+0000" 
      } 
      ], 
    "paging": { 
     "previous": "https://graph.facebook.com/20531316728/feed?fields=picture&limit=25&since=1367513845", 
     "next": "https://graph.facebook.com/20531316728/feed?fields=picture&limit=25&until=1349462557" 
    } 
} 

在那裏,它包含了API響應,我想有一個正確的佔位尺寸與像Facebook的我的自定義客戶端,沒有圖片維度的信息iOS應用

我嘗試添加/facebook/feed?fields=picture,width,height,但沒有運氣檢索相應的信息。

是否有一種可能的方式從API本身檢索圖片的高度和寬度參數?

回答

1

不,API不返回全部圖片的尺寸基於來自/ page_id/feed或流表的帖子提要。

我提到的所有原因,你可以做的是:

SELECT post_id, created_time, actor_id, attachment, message FROM stream WHERE source_id=PAGE_ID AND created_time<now() LIMIT 50 

如果職位類型照片: enter image description here

如果職位類型是視頻: enter image description here

如果帖子類型是鏈接從fbexternal開始(提取參數w和h): enter image description here

如果帖子類型沒有fbexternal(臉書照片)鏈接,我們卡在這裏!: enter image description here

代碼原型:

if attachment: 
    image_url = attachment.media[0].src 
    if image_url: 
     m = image_url.photo.images 
     if m: 
      if m.src == image_url: 
       image_width = m.width 
       image_height = m.height 
     else: #no dimensions info 
      if host by fbexternal: 
       #extract parameter w and h from https://fbexternal-a.akamaihd.net/safe_image.php?d=AQBhfbzbNudc_SE8&w=130&h=130&url=http%3A%2F%2F 
       image_width = 130 
       image_height = 130 
      else: 
       Stuck here, very hard to get extract photo id based on this url, a lot of work! 

總之,我強烈建議你獲得圖像的寬度和高度後,下載圖片。例如,PHP有getimagesize函數,python有Python成像庫(PIL)。

+0

謝謝,我想我可以離開「鏈接」類型未知。所以Graph API似乎沒有辦法讓我檢索,我現在要用FQL來做這件事。 – 2013-05-12 04:08:19

0

我不確定是否有更簡單的方法來獲得所需的寬度和高度,但這裏有一個確定的但有點冗長的方式。

以您爲例,您看到的第一張照片「20531316728_10151883063741729」的ID實際上並不是照片的ID。這對於那些圖片是在後。

你可以做什麼,是查詢該帖子ID

http://developers.facebook.com/tools/explorer?method=GET&path=20531316728_10151883063741729

然後它會暴露圖片的OBJECT_ID 457846347622804(做搜索,你會看到我的意思是)。現在您查詢該圖片的ID,您將獲得寬度和高度。

http://developers.facebook.com/tools/explorer?method=GET&path=457846347622804

從此,你應該能夠得到您所需要的比例。

如果任何人有一個完美的方式完成這件事,我也很想知道。

+0

不,您的示例僅適用於照片類型。視頻和鏈接類型都不會返回對象ID。 – 2013-05-10 09:26:26

+0

更正:視頻類型可能會返回object_id,如果它是Facebook視頻,如https://www.facebook.com/photo.php?v=10200642979948528。但是,https://www.facebook.com/22707976849/posts/10151415452136850不會返回object_id。 – 2013-05-10 10:55:12

+0

我正在談論Facebook照片和Facebook視頻,因爲我認爲這就是問題所在。 – 2013-05-13 04:52:32