2012-04-03 17 views
2

我正在開發一個連接到Facebook的應用程序(Flash/AS3)。在用戶登錄後,我需要獲取他的朋友列表(僅限ID),檢查他們中的任何人是否是我的應用的用戶(通過數據庫的註冊表),通過向每個用戶添加標誌來更新列表一個應用用戶,然後做更新列表的東西。我的問題是:Facebook應該將用戶的好友列表保留在我自己的數據庫中?

  • 我應該問朋友列表,檢查應用程序啓動時檢查並檢索數據到Flash嗎?我將不得不等待Facebook的響應以及執行腳本的時間(php);我只會在應用程序的用戶信息中包含一個表格;

  • 我應該把所有的用戶的朋友在我自己的數據庫,並有一個cron作業自動更新(每天執行一次)我的數據庫,也就是要求每一個我的應用程序用戶的朋友列表,執行檢查,刪除重複等等?在這種情況下,我將擁有一個包含應用程序用戶的表格,一張包含我所有用戶朋友(當然可能爲幾千個)的表格和一個user_friends表格,用於關聯兩個以前的表格;

筆記: - 我使用PHP /捲曲發出請求到圖形API - MySQL數據庫 - 我可能還可以檢查Twitter和G +的朋友爲每個用戶(這樣的腳本可能甚至更多的時間,雖然我可以通過每個網絡在sepparate步驟)

你認爲什麼是最好的方法?我不介意在應用程序中有一個「加載」期限。此時,我已經有了第一種方法幾乎完成,但一位同事建議第二種方法,以便應用程序用戶不必等待Facebook/Twitter/G + /腳本響應。但是...不是浪費資源嗎?我的意思是,Facebook等已經有用戶/朋友連接...我可以通過在我自己的數據庫中複製並獲得隱藏於應用程序用戶的更新的cron作業來獲取任何內容嗎?

希望我明白了!謝謝!

回答

2

我曾經遇到類似的問題。您將無法例行更新數據庫,因爲您通常需要一個活動用戶(=訪問令牌)來檢索該用戶的好友列表。以前,你可以問權限「offline_access」,但此權限已被棄用: https://developers.facebook.com/roadmap/offline-access-removal/

我決定寫所有的朋友的ID添加到一個文本(用戶ID爲文件名:123456789.txt)我的服務器上在我的應用程序的第一次啓動(顯示一個微調和一個文本說「加載好友...」)。每當應用程序開始後,我從該文件中提取ID。

您可以通過檢查該文件的創建日期來觸發該文件的更新。如果它「太舊」,請在讀完所有朋友ID後刪除並重新創建它。這樣,文件緩存將在後臺創建,而不會被用戶注意到。

+0

我沒有意識到'offline_access'(將會)不推薦使用:/。 所以我想你是對的 - 如果令牌不再是「永久」了,自動更新將不起作用。不過,您的解決方案似乎可以保留好友ID的緩存。但是,你認爲這是必要的嗎? Facebook可能需要「很長時間」才能檢索好友列表?無論如何,我會保持現在的應用程序(選擇1在我的問題),當我有其他的一切就緒,我會做一些測試,並回到它。 謝謝!;) – Edd 2012-04-04 15:55:45

+1

我剛剛意識到圖形API中有「實時更新」 - (developers.facebook.com/docs/reference/api/realtime) - 這意味着可以訂閱某些字段/連接(用戶的朋友列表就是其中之一),並且Facebook本身將POST請求更改爲我們選擇的URL,允許自定義應用程序數據更新/緩存。 – Edd 2012-04-04 16:40:26

+0

你可以通過應用程序訪問令牌獲得好友列表 – 2014-02-22 13:42:09

相關問題