2014-06-12 153 views
10

我使用Facebook的圖形API,我發出此命令Facebook的圖形API總是返回小圖片

/V2.0/me/home

返回類似:

"id": "xxxxxxxxxxxxxxxxxxxxxx", 
    "from": { 
    "id": "xxxxxxxxxxxxxxxxx", 
    "name": "Roger" 
    }, 
    "story": "Roger shared a link.", 
    "picture": "https://fbexternal-a.akamaihd.net/safe_image.php?d=AQB2VeutsxS6ht3i&w=154&h=154&url=https%3A%2F%2Fwww.facebook.com%2Fads%2Fimage%2F%3Fd%3DAQIuWnred6mG7Ti280buWL8uhE00-W2H0Eom1PzNa3Av0x3y7JieMPqLmxAFYsCRKh0Zr8u_PyWO1lFbTknlj_DaksBoFiaD8d2yIWLOGNYKie1w9Kff6vyyElxnfrlHH7uSRhwycKNakg7szgWtBBwC", 
    "link": "http://xxxxxx.com", 

問題在於上面的「圖片」標籤,其中圖片的網址是在之後給出的。

如果您將該網址粘貼到您的瀏覽器中,您將獲得一個小縮略圖大小的圖像,但在真實的Facebook頁面上,它會顯示相同圖像的更大高分辨率版本。

這與發送回來的所有照片網址相同。有些網址以_s.jpg結尾,我可以將其更改爲_n.jpg以使其成爲更大的圖像,但對於末尾沒有_s.jpg的網址不起作用,如上面的網址。

任何人都知道要使用的facebook-graph-api命令,以便Facebook發送指向較大高分辨率圖像的url,而不是發回指向所有縮略圖的網址?或者如何改變網址,使其指向大型高分辨率圖像?

感謝

+0

@ N S:你有沒有得到高分辨率的圖像。 ? –

回答

10

到位<ID>的使用用戶的ID,你可以得到一個更大的分辨率的圖像:

http://graph.facebook.com/<id>/picture?type=large

+0

無法正常工作。 http://graph.facebook.com/10150381045528031/picture?type=normal。 –

+0

此方法效果很好,但類型已更改。支持的類型是「縮略圖」,「正常」和「專輯」。 –

+0

它的工作原理!我幾個小時都在搞這個。 –

3

從外地 「OBJECT_ID」 獲取的ObjectId特定職位來自您的新聞Feed

使用此object_id值進行單獨的Graph API調用,如下所示 -

https://graph.facebook.com/10152199489086727?fields=images&access_token=

這將返回此帖子不同大小的圖像列表。

輸出示例:

{ 
    "images": [ 
    { 
     "height": 462, 
     "source": "https://fbcdn-sphotos-h-a.akamaihd.net/hphotos-ak-xpf1/t1.0-9/10302057_10152199489086727_707407897349696496_n.jpg", 
     "width": 616 
    }, 
    { 
     "height": 320, 
     "source": "https://fbcdn-sphotos-h-a.akamaihd.net/hphotos-ak-xpf1/t1.0-9/p320x320/10302057_10152199489086727_707407897349696496_n.jpg", 
     "width": 426 
    },.... .. 
    ], 
    "created_time": "2014-07-23T18:15:16+0000", 
    "id": "10152199489086727" 
} 
+0

Iam獲取錯誤:'不支持的獲取請求。請在developers.facebook.com/docs/graph-api –

+0

上閱讀Graph API文檔此'object_id'對於'link'類型的帖子不存在? –

+1

每種類型似乎需要不同的方法我問了一個關於它的問題,以創建這些方法的協作列表,但我在10分鐘內得到了2票反對,這是一個恥辱:S http://stackoverflow.com/questions/29233382/getting-large-images-from-facebook-with-graph-api-v2-2-by-typefeed-post-photo-l – nach

5

後你會得到一個職位的 「ID」 在您的新聞飼料中使用(在JavaScript)

pic_url = 'http://graph.facebook.com/'+ post_id +'?fields=full_picture&access_token="+ response.authResponse.accessToken; 
在您的要求

迴應示例:

{ 
    "full_picture": "https://fbexternal-a.akamaihd.net/safe_image.php?d=AQBbJqpkt2Jhf0VF&url=http\u00253A\u00252F\u00252Fwww.mixofpix.eu\u00252Fwp-content\u00252Fuploads\u00252F2014\u00252F08\u00252Flampa-oblak.jpg", 
    "id": "1407721719477425_1467737580142505", 
    "created_time": "2014-08-07T20:00:51+0000" 
} 
+0

iam getin錯誤:'不支持的獲取請求。請在https://developers.facebook.com/docs/graph-api' –

+0

中閱讀Graph API文檔1.您是否有訪問令牌,而不是上面的pic_url中的'access_token'? –

+0

對不起,我找不到你。只有一個access_token有權利? –

0

您可以通過在後的「圖像」搶奪財產的url查詢字符串變量的值獲得原始圖片的URL,並對其進行解碼:

var origImgSrc = decodeURIComponent(picture.match(/(url=)([^&]+)/)[2]); 

另一種更徹底更重要的方法是向Facebook Graph API發送批量請求,第一個請求從我/ home /獲取提要,然後第二個請求使用?id =查找任何返回的object_id屬性(用於Fac上的照片/視頻電子書)。

你會做到這一點通過發送POST請求https://graph.facebook.com在請求正文如下:

access_token=VALID_ACCESS_TOKEN&batch=[{%20%22method%22:%22GET%22,%22name%22:%22me_home%22,%20%22relative_url%22:%22me/home?fields=object_id,full_picture%22,%20%22omit_response_on_success%22:false},%20{%20%22method%22:%22GET%22,%20%22depends_on%22:%22me_home%22,%20%22relative_url%22:%22?ids={result=me_home:$.posts.data.*.object_id}%22}] 

然後,你可以做一些花哨的JS解析得到無論是full_picture財產或源屬性之一來自對象的圖像數組。

2

嘗試在您的請求中指定attachments字段。

/v2.0/me/home?fields=attachments 

這會給你一個'附件'字段,裏面有一些媒體。你會發現有高分辨率的圖像。

+0

這應該是公認的答案! –