【问题标题】:Restricting access to a public API限制对公共 API 的访问
【发布时间】:2012-07-26 04:53:55
【问题描述】:
我有一个 API 想要提供公共访问权限,但我希望能够限制访问权限。
我一直在思考 Twitter 的模式:
- Twitter 允许开发人员使用 api 密钥访问数据(我认为)。
- Twitter 还必须访问其网站上的数据,以便您发布推文/搜索。
- 因此 Twitter 必须能够阻止开发人员冒充 twitter 并基本上使用他们的 api 密钥。
他们是怎么做到的?还有更好的方法吗?
【问题讨论】:
标签:
web-services
api
web-applications
rate-limiting
【解决方案1】:
Twitter 不使用他们的 REST API 来支持他们的网站,他们直接查询他们的数据库。因此,没有 API 密钥可以窃取。您可以阅读 Twitter 的 API 和网站数据库查询(大约 2009 年)here 之间的区别。
basic techniques Twitter 用来限制其 API 的可能也是您想要考虑的:
每小时允许 [更少] 请求进行未经身份验证的呼叫。
未经身份验证的呼叫是根据面向公众的 IP 来衡量的
发出请求的服务器或设备。
允许调用 OAuth [更多]
每小时的请求,并根据 oauth_token 中使用的
请求。
实现的机制取决于你的服务器平台(你应该用它更新你的原始帖子),但你可以在他们的website 上了解 OAuth(上面的第二种技术)。