【问题标题】:Twitter API 1.1 to fetch tweets listTwitter API 1.1 获取推文列表
【发布时间】:2012-12-05 11:27:27
【问题描述】:
对于我的 CMS 组件,我正在实现与 Twitter API 的集成,以获取和显示推文列表(连接到用户或搜索查询)。我正在使用Twitter Restful API v1.1,因为 1.0 版本将在two months 中删除。对我来说有两个有趣的请求是user_timeline 和search 一个。
由于我的技术强烈依赖缓存,因此我需要尽可能避免服务器端处理,提供静态 html 和一段 javascript。我已经为旧版本的 API 完成了它,它工作得很好。然而,新方法需要通过 OAuth 提供身份验证数据。其中一个属性 (oath_signature) 是其他属性的哈希值(其中有 oauth_timestamp 和 oath_nonce,它们应该(应该?)对于每个 Twitter 请求都是唯一的)和密钥,因此使其不安全在客户端生成它。
是否有任何安全的方法可以使用新 API 在客户端获取推文列表?
【问题讨论】:
标签:
javascript
twitter
oauth
【解决方案1】:
您的问题的简单答案是:“不,没有服务器端代码就没有安全的方法。”我要做的是设置一个服务,每 xxxx 秒轮询一次 Twitter 并检索所需的推文。您应该缓存或存储结果,然后在每次发出下一个请求时清空它们。如果您使用的是 C#,我一直在开发 C# Twitter library,它复制了 Twitter 的 API,并且已经支持抓取用户的时间线。我将在接下来的两天内添加对过滤器和搜索的支持(如果您决定自己做的话,每个应该不超过十分钟来实现,不包括测试)。你可以在我之前提到的服务中引用这个库。
如果您没有为此所需的服务器资源,那么我强烈警告您不要使用绕过 Twitter 预期安全措施的解决方案,因为这可能会使您或您的客户处于易受攻击的位置。
【解决方案2】:
您必须在服务器端编写代理网络服务。正如您所说,缓存对于避免每 15 分钟 15 个请求(例如拉推文等基本内容)至关重要。
绝对避免在前端进行任何身份验证。使用 OAuth 2 的新“application only”身份验证将允许您在 JavaScript 中嵌入不记名令牌,这意味着您不需要执行任何您正在谈论的签名内容。但是不要。任何人都可以使用您的不记名令牌,如果您自己的用户没有用尽速率限制,其他人可能会窃取您的令牌。
如果您自己没有服务器端资源来执行此操作,您可能需要查看Flamingo。它会为你做认证和缓存,所以你只需要像以前一样在 JS 中工作。