2010-10-01 89 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

相关问题