2013-02-14 131 views
4

我有圖形API的回報問題,我想知道是否有人知道我爲什麼或如何修復它。Facebook圖形/ Fql:獲取所有圖片

我需要爲給定用戶(朋友數據,而不是活動用戶)下載所有照片數據。這是我嘗試過的兩件事。

FQL: "select pid from photo where subject=friend_uid" 
Graph: "friend_uid/photos?fields=picture,created_time,tags.fields(name,id)&limit=1000" 

我有friends_photos和user_photos權限。

任何使用> 1000標籤的用戶都會大大減少結果數量。 例如,它只會返回大約200張左右的照片,這是不可接受的,我需要所有這些照片

由於/直到(或created_time <或> __)以及限制子句僅提高結果計數與FQL但分塊數量使得它非常低效。

任何想法?標籤數據對我的目的也很重要。

所以,我需要正確的查詢或查詢序列來獲取所有使用FQL或graph-api的給定user_id的所有照片的所有標記數據。

+0

你需要什麼,什麼是問題? – 2013-02-17 04:06:09

回答

3

我最近在PHP中創建了一個類似的項目(將所有Facebook好友的照片全部取出)。 Facebook的限制記錄很差,但我發現使用Graph API,朋友被標記爲400張照片,每個請求上傳的朋友有5000張照片。請注意,從{用戶} /照片拉取只拉他們被標記的照片,而{用戶} /照片/上傳只拉取{用戶}上傳的照片。我想到400個標籤和5000張上傳的照片足以滿足我的情況。

如果你確實需要額外的照片,你必須檢查/照片請求的用戶返回照片的數量,並檢查它是否等於400.如果是這樣,你將不得不進入下一頁,遞歸地。

對於/照片/上傳的請求,Facebook使用基於光標的分頁(請參閱this page的底部),這意味着只有當有更多值返回時,纔會發送pagination-> next和pagination-> prev數據。這使得下一頁很容易(再一次,你將不得不遞歸)。

+0

我很欣賞答案。對於用戶/照片,它似乎使用基於時間的分頁。最後一行顯示爲:https://graph.facebook.com/frienduid/photos?fields=source,tags.fields(name,id)&limit=5000&type=tagged&until=1190408747 - 但是當我遵循該鏈接時,它總是空的(用戶肯定有超過400個標籤) - 關於如何超過400的任何想法? – JoshDG 2013-02-20 19:14:09

+0

您是否確定包含您的訪問令牌?如果你不在URL中包含'access_token'參數,它只會拉出用戶標記的_public_照片,這可能顯着小於400. – 2013-02-20 22:35:35

+0

現在我只是使用圖形API瀏覽器來測試它,所以它會自動包含令牌,然後我會嘗試關注底部的頁面。 (我嘗試添加令牌以防萬一..但它不起作用...無論哪種方式,第一頁確實會返回400個值,但顯然發生在400次之前) – JoshDG 2013-02-20 23:10:05

相關問題