【发布时间】:2013-04-03 17:57:46
【问题描述】:
我正试图围绕所有这些“以 api 为中心”的概念展开思考,不知何故,由于各种原因(在颠倒之后)我无法自己找到答案,所以我希望你能帮助我:)
在这里,作为个人项目的一部分,我需要创建一个类似社交应用程序网站的东西,我说“喜欢”,因为它只是一个小项目,没什么太花哨的。
我的想法是创建一个休息服务,比如http://api.domain.com/v1/ 以及所有需要的资源方法(创建/删除/更新/读取)。
现在,在创建此服务之后,我需要创建我的网站,例如 http://www.domain.com/,并且该网站将与我的 api.domain.com 进行通信以执行它所做的每个操作。如果有新用户注册,则将数据发送到 api 服务器,进行处理,返回答案等。
然后,网站创建完成后,我打算使用phonegap 为iphone 和android 创建一个原生应用程序。这些移动应用程序基本上就像我的网站一样,连接到 api 服务器并执行各种操作。
如果不涉及授权,这非常简单,所以任何知道 api 端点的人都可以管理所有资源,正如你猜想的那样,我不想要,所以我必须实现某种授权机制,我不确定要使用什么。 我正在考虑实施 OAuth2,以便我的 api 充当 oauth 提供者,然后我的网站/移动应用程序将连接到 api,获得授权,然后完成他们的工作。 这是一个好方法,有什么想法吗?
接下来,假设我坚持使用 oauth 并且一切正常,如果我想让我的用户有机会创建自己的应用程序来访问有关其他用户/或他们自己的数据的信息(基本上我有一个公共 api ,为什么不利用它),那么将安装该应用程序的用户将需要批准它才能访问他的信息。我知道这对于 oauth 是可能的(因为 facebook/twitter/others 这样做),问题是,我如何区分简单的用户创建的应用程序和我自己的应用程序(如网站和移动应用程序)?这种分离是否可以通过在请求权限时提供各种“范围”来实现? 如果没有,我应该使用什么其他方法?
我对 oauth 没有太多经验,所以可能有些问题有点错误,希望你能明白我的问题。
如果有帮助,我将使用 PHP 5.4 和 Yii 框架、Apache 2(可用 mod ssl)、MySQL。
谢谢:)
【问题讨论】: