2012-08-27 114 views
0

試圖抓住所有的用戶Facebook好友信息,我可以通過批量要求成功地做到:Facebook的圖形API - 批量獲取大型圖片

NSString *jsonRequest1 = @"{ \"method\": \"GET\", \"relative_url\": \"me/friends?fields=name,picture\" }"; 
NSString *jsonRequestsArray = [NSString stringWithFormat:@"[%@]", jsonRequest1]; 
NSMutableDictionary *params = [NSMutableDictionary dictionaryWithObject:jsonRequestsArray forKey:@"batch"]; 
[facebook requestWithGraphPath:@"me" andParams:params andHttpMethod:@"POST" andDelegate:self]; 

個人資料照片是在小尺寸(50×50)我需要指定照片的大小。我一直在看圖API文件,我很努力地把兩者結合在一起 - 這裏是相關鏈接:http://developers.facebook.com/docs/reference/api/user/

它說要添加以下參數的請求,但就像我說的,我不是知道如何配合兩個在一起:

picture?type=large 

我敢肯定,它會針對特定用戶的單個請求工作,但我有通過批處理請求沒有運氣。

感謝您的幫助,它可能正在凝視着我!

+0

你感到困惑的用戶對象的'picture' _property_用'picture' _connection_這裏 - 這些都是不同的東西,並通過'type'參數指定大小隻爲後者工作。 – CBroe

回答

1

我不認爲有一個簡單的方法來使用Graph API來做到這一點。這是很容易與此FQL查詢(可以通過批處理請求中傳遞):

SELECT uid, name, pic_big FROM user WHERE uid IN 
    (SELECT uid2 FROM friend WHERE uid1 = me()) 

如果你正在尋找一個特定大小的圖片,看看新profile_pic表。

+0

真的嗎?這真是一種恥辱,Facebook會考慮這樣的要求。 Songpop/Draw Something等應用程序如何做?我很確定他們不滾動每個用戶ID,圖像的質量肯定比50x50好。我從字面上沒有使用FQL的經驗,你有沒有任何指導如何使用Facebook的精神將你的方法轉化爲HTTP請求? – user1168056

+0

您可以使用'method/fql.query?query = URL_ENCODED_QUERY'的'relative_url'來進行FQL查詢。有關詳細信息,請參閱文檔中的「使用fql.query ...」部分:https://developers.facebook.com/docs/reference/api/batch/ – cpilko

+0

對我來說沒有任何意義。當我說沒有經驗的時候,我的意思是沒有經驗:D我會研究它,不知道我到底在做什麼。歡呼你的幫助。 – user1168056

2

的FQL有像Facebook這樣的一些優勢說

FQL,Facebook的查詢語言,允許你使用SQL風格 界面來查詢由圖形API公開的數據。它提供了Graph API中沒有的高級 功能,包括將多個 查詢分批處理爲一次調用。

查看來自Facebook的本教程。

https://developers.facebook.com/docs/howtos/run-fql-queries-ios-sdk/

但我建議使用圖形API與野外拓展,這是非常有用的,更容易比FQL理解。請注意,Graph API不支持所有子字段。

​​

好運氣的人!

0

類似的東西爲我的作品:

{ 
"friends": "SELECT uid, name, pic_big FROM user WHERE uid IN (SELECT uid2 FROM friend WHERE uid1 = me())", 
"profiles": "SELECT id, url, real_width, real_height FROM profile_pic WHERE id IN (SELECT uid FROM #friends) AND width = 300" 
} 

它並不完美(兩個查詢掃描),但它是一個請求。

基於profile_pic表文檔。

可以在FQL Explorer進行測試。

1

這可以通過在URL中添加高度和寬度參數來實現。 FB會嘗試爲您提供符合您的寬度和高度標準的圖像。你會批這個樣子:

var batch= { 
    batch: [] 
}; 

batch.batch.push({ 
    method: 'GET', 
    relative_url: fbid + '/picture?height=400&width=400' 
}); 

FB.api('/', 'POST', batch, function (response) { 
}); 
相關問題