【问题标题】:Integrating twitter,facebook and other services in one single site将 twitter、facebook 和其他服务集成到一个站点中
【发布时间】:2011-04-19 18:38:30
【问题描述】:

我需要开发一个应用程序,它应该可以帮助我在我的应用程序中获取来自不同服务器(如 Twitter、facebook 等)的所有状态、消息,并且当我发布消息时,它应该在所有服务中得到更新。我正在使用 authlogic 进行身份验证。谁能建议我可以使用哪些宝石/插件..

我需要 API 帮助来获取所有要在我的应用程序中显示的推文/消息,以及通过从我的应用程序发布消息来将消息发布到相应服务的方法。任何人都可以从设计角度帮助我。

【问题讨论】:

    标签: ruby-on-rails facebook twitter


    【解决方案1】:

    在你的脑海中逐步完成你想做的事情。想象一下工作站点,想象一下你的 web 应用程序在你开始之前工作。因此,您的用户登录(由 authlogic 处理)并看到一个名为“您现在在做什么?”的文本框。用户填写状态消息并单击“发布”。状态消息显示在他们之前发布的消息的顶部。

    从简单的部分开始。创建一个发布到两个服务的类。使用 twitter gem 和 rfacebook 发布到两个已经定义的服务。将来,您会希望让用户将服务关联到他们的帐户,并且您将遍历关联的服务并将消息发布到每个服务。完成此工作后,您可以稍微重构或完善 UI 以完善此功能。我个人会在最后执行“将社交媒体帐户添加到我的个人资料”功能。

    更难的是读取数据(很奇怪),因为您必须弄清楚如何存储它。你什么都不能存储,但我怀疑你会遇到 API 限制,只是一直在搜索(可以围绕这个进行设计)。我会保留一些与用户社交媒体帐户相关的帖子缓存。这样,数据模型将如下所示:

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

    当然,现在您需要安排帖子的缓存。这可以基于事件(例如登录时)或基于时间手动完成。因此,当更新发生时,您会加载该社交媒体帐户的帖子,用户将在下次访问该页面时看到这些帖子。要在客户盯着屏幕时实时推送到客户的浏览器,请使用 faye(非平凡)和 ajax 将新帖子拉到社交媒体流视图的顶部。

    基于时间的方法很棘手,因为您要么必须运行 cron 作业,要么让 rails 使用像发条这样的宝石来处理这一切。但是你必须让rails运行。我还解决了这个问题,让 /lib 中的一个类完成所有工作,一个简单的网络调用启动更新。但它不在多用户用例中。所以这可能行不通。在任何情况下,您都希望有一些很好的可重用代码来解决这些问题,因为更新请求可能来自许多不同的来源。

    您还必须处理 API 限制。从 twitter 拉取内容时,您不会得到所有内容。用户必须知道这一点,否则您必须以某种方式指示“时间中断”。

    用户界面应该非常简单(无论如何在功能上),因为您知道帖子/内容来自哪个来源。在帖子旁边放一个小图标来显示它来自哪个社交媒体网站很容易。

    不管怎样,祝你好运,听起来是个有趣的项目。

    【讨论】:

    • 嘿,很好的答案,即使它已经 5 岁了。我正在处理一个混合的社交媒体供稿,并想就这个主题提出一个额外的问题:您是否总是建议您自己保存所有帖子(假设为来自 fb、twitter、vine 和 youtube API 的 JSON 文件)首先服务器,通过 Cronjob 更新它,然后访问该本地文件,而不是在用户打开站点时将 Ajax 请求发送到不同的网络 API?我可以想象第一个选项更快吧?
    • 您可以为此使用缓存,而不是将其视为文件。如果您真的想提供提要(来自您的服务器)。缓存的问题(正如您暗示的 cron 想法)是保持它新鲜或知道何时删除它。 Cron 有其自身的问题(它是一个时钟,而时钟在很多时候都不是衡量事件的好方法),例如,您的社交网络提要服务可能想要成为“最新的东西”,但它的行为就像“最新的自从我一小时前刷新以来的事情”,使用 RSS 可能没有其他选择。
    • 我明白了,但是如果我首先将所有数据“存储”在我自己的服务器上,我可以消除在页面加载时访问所有不同 API 的额外延迟。正确的?我知道 Cronjob 并不能真正提供实时 Livefeed,但为了提高性能,我认为用户体验会得到增强。或者有没有其他方法可以达到同等的性能/速度?我对缓存不是很熟悉,但是是否有一个选项可以只获取已更改的新内容并将其更新到该缓存?这意味着用户浏览器缓存和服务器端什么都没有,对吧?谢谢!
    • 有浏览器数据存储,但我可能会将其缓存在服务器上。我想你可以制作一个完全无服务器的应用程序来做到这一点,但是你不得不担心内存限制和浏览器性能。另外,我使用的浏览器数据存储与服务器端没有直接的可比性。根据我的经验,它们要简单得多,但我不是 SPA/javascript 权威。
    • 好的,非常感谢您的帮助!最后一个问题:如果我在自己的服务器上使用 JSON 文件并在客户端加载页面时访问它们来构建视图,我可以避免用户看到缓存的弃用页面。我看到在服务器上使用 http 缓存将是提供静态页面的更好更快的选择,但是当没有新内容时,如何确保用户只获得缓存视图?或者在需要时获取新内容?如果客户端必须经常访问新内容,缓存是否仍会在性能上胜过访问 JSON 文件?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-04
    • 2012-02-26
    • 2014-11-29
    • 2015-03-31
    • 1970-01-01
    • 2012-09-26
    相关资源
    最近更新 更多