2010-10-01 93 views
1

我需要開發一個應用程序,它可以幫助我獲取所有狀態,來自不同服務器的消息,例如Twitter,Facebook等等,並且當我發佈消息時應該在所有的服務中得到更新。我正在使用authlogic進行身份驗證。任何人都可以建議我什麼寶石/插件,我可以使用..將twitter,facebook和其他服務集成到一個站點中

我需要API的幫助,以獲得所有的鳴叫/消息顯示在我的應用程序,也是通過發佈消息張貼到相應的服務從我的應用程序。任何人都可以從設計角度幫助我。

回答

0

走過你想要做的事。想象一下工作現場,想象你的web應用程序在你開始之前工作。因此,您的用戶登錄(由authlogic處理)並看到名爲「您現在正在做什麼?」的文本框。用戶填寫狀態消息並點擊「發佈」。狀態消息顯示在先前發佈的消息的頂部。

從容易的部分開始。創建一個發佈到兩個服務的類。使用twitter gem和rfacebook發佈到兩個已定義的服務。將來,您會希望讓用戶將服務關聯到他們的帳戶,並且您將遍歷關聯的服務並將消息發佈到每個服務。一旦你有這個工作,你可以重構或擦亮用戶界面一點點,以完善這個功能。我個人會在最後做「爲我的個人資料添加社交媒體帳戶」功能。

更難讀的是數據(奇怪的是),因爲你將不得不弄清楚如何存儲它。你可以不存儲任何東西,但是我懷疑你會遇到API限制,只是一直在搜索(可以圍繞這個設計)。我會保留一些與用戶社交媒體帳戶關聯的帖子緩存。這樣,數據模型將如下所示:

A user has many social media accounts. 
A social media account has many posts. (cache) 

當然,現在您需要安排緩存帖子。這可以根據事件(如他們登錄時)或基於時間手動完成。因此,當更新發生時,您會加載該社交媒體帳戶的帖子,並且用戶下次訪問該頁面時會看到帖子。在盯着屏幕時,要實時推送到客戶端瀏覽器,請使用faye(非平凡)和ajax將新帖子拉到社交媒體流視圖的頂部。

基於時間的方法很棘手,因爲您必須擁有一個cron作業運行或者讓rails像發條一樣處理它。但是,你必須讓鐵軌運行。我還通過在/ lib中完成所有工作並通過簡單的Web電話啓動更新來解決此問題。但這不是一個多用戶用例。所以這可能無法正常工作。在任何情況下,您都希望爲這些問題提供一些很好的可重用代碼,因爲更新請求可能來自許多不同的來源。

您還必須處理API限制。當從Twitter上拉下內容時,你不會得到一切。這隻需要用戶知道,否則你必須以某種方式指示「時間中斷」。

用戶界面應該非常容易(功能上無論如何),因爲您知道帖子/內容來自哪個來源。在帖子旁邊放置一個小圖標可以很容易地顯示它來自哪個社交媒體網站。

無論如何,祝你好運,聽起來像一個有趣的項目。

+0

嘿,那裏,即使它是5歲,很好的答案。我正在研究混合社交媒體Feed,並希望就此主題提出一個額外問題:您是否總是建議您自行保存所有帖子(比如來自fb,twitter,vine和youtube API的JSON文件)服務器首先,通過Cronjob更新它,然後訪問該本地文件,而不是在用戶打開網站時向不同的網絡API發送Ajax請求?我可以想象,第一種選擇是更快的方式嗎? – 2016-05-22 14:01:41

+1

您可以使用緩存而不是將其視爲文件。如果你真的想要提供飼料(從你的服務器)。問題(正如你暗示cron的想法)與緩存保持新鮮或知道何時刪除它。 Cron有它自己的問題(這是一個時鐘和一個時鐘很多時候不是一個很好的衡量標準),例如你的社交網絡饋送服務可能想成爲「最新的事物」,但它的行爲像「最新的事情,因爲我一小時前刷新「,用RSS也許沒有別的選擇。 – squarism 2016-05-25 18:35:59

+0

我明白了,但是如果我首先在自己的服務器上「存儲」所有數據,則可以消除頁面加載時訪問所有不同API的額外延遲。對?我知道Cronjob並非真的能夠提供Realtime Livefeed,但有利於性能,我認爲用戶體驗會得到增強。或者還有其他方式來實現相同的性能/速度嗎?我對緩存並不熟悉,但有沒有一種方法可以獲取已更改的新內容並將其更新到該緩存?這意味着用戶Browsercache和服務器端沒有任何東西,對吧?謝謝! – 2016-05-26 15:19:39

相關問題