2012-01-11 24 views
0
  • 我正在使用Facebook Graph Api下載關於我們的應用程序用戶及其Facebook朋友的信息。有需要更新這些數據,但據我所知,實時更新不是一種選擇。例如,我希望更新我們應用用戶的朋友的個人資料供稿,並且我沒有看到用實時更新來實現這一點的方法。
  • 有人可以給我一些關於這個更新機制的建議嗎?我需要更新應用用戶,他們的朋友連接以及用戶和他們的朋友的個人資料提要。我知道我將不得不調查Facebook服務器來檢索這些數據。我試圖找出的是在做這些事情時的一些好的做法。更新頻率?如何識別數據已經改變?如果任何人有這種事情的經驗,每一個建議將意味着很多。

謝謝。與Facebook Graph Api集成 - 沒有實時更新的更新機制

+0

組織您的問題(用子彈) – Adrian 2012-01-11 17:25:44

回答

0

您可以使用Graph API調用的since = query字符串參數。下面是一些僞代碼,以幫助您一起

var usersLastPostDate = GetLastPostDateFromDataStore(userId); 
if(usersLastPostDate not populated) { 
    streamItems = GraphApiGet(userId, "me/feed") 
    lastStreamItemDate = GetNewestStreamItemDate(streamItems) 
    StoreLastPostDateIntoDataStore(userId, lastStreamItemDate) 
} 
else { 
    streamItems = GraphApiGet(userId, "me/feed?since=" + usersLastPostDate) 
} 
+0

感謝您的快速答覆,我會盡力的,因爲參數 – njosa 2012-01-11 20:19:31

+0

如果你覺得這回答了你的問題,請您務必接受這個回答 問題上不顯示未答覆的名單。請參閱: http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work – DMCS 2012-01-11 20:25:30

+0

好的,我會盡快解決我的問題 – njosa 2012-01-11 21:16:46

0

沒有大量的爲您的使用情況下非常有用(如你想獲得這勤換數據),但值得指出的是圖形API現在支持的ETag - https://developers.facebook.com/blog/post/627/

ETags會告訴你自上次請求數據以來數據是否發生了變化。這不會阻止你擊中Facebook API限制限制,但它是一種快速而簡單的方法,用於判斷自上次請求數據後數據是否發生了變化。

沒有人回答你的問題,因爲它取決於你的應用程序在做什麼。您需要多久才能獲取最新信息?如果你的數據陳舊了5分鐘,那真的是個問題嗎?如果某些用戶操作需要擁有它,您可以從Facebook中輕鬆獲取數據嗎?

如果您確實需要進行大量輪詢嘗試並使用非阻塞IO,尤其是在您希望在輪詢期間向Facebook發送大量開放HTTP請求時。建立一個可靠的排隊機制和HTTP撲克,以確保請求按預期進行。沒有任何關於你使用的技術堆棧的想法,很難做到比這更具體。

HTH

+0

謝謝你的詳細回覆。我會嘗試使用ETags來處理不頻繁更改的數據。數據可能會過時一段時間,我會嘗試在過時的信息和頻繁的投票之間找到一些權衡。更新不是由用戶操作觸發的,它也將成爲一臺單獨的服務器。我正在使用RestFb rest api客戶端從FB中檢索數據。 – njosa 2012-01-11 21:05:31

0

這個怎麼樣:Open Graph Subscription system

+0

我認爲這是實時更新。我在上面提到,我認爲它不符合我的要求。如我錯了請糾正我。 – njosa 2012-01-11 21:09:57

+0

@njosa,你是對的。他們提供的鏈接是用於實時更新。 – DMCS 2012-01-11 22:42:51

+0

我認爲你可以。我只是做了這個fb應用程序,它的工作原理如上所述。在約30秒的配置文件修改後(我訂閱了朋友列表更改),我從fb得到一個回叫,告訴我必須更新該用戶好友列表的緩存。 – 2012-01-12 17:08:18