我有兴趣使用 Sinatra 开发一个 RESTful JSON 数据 API,并让一个 HTML5/JS 应用程序使用该数据 API。显然,数据 API 需要某种形式的身份验证,以便用户 Joe 只能通过 API 访问他自己的资料。如果我不能推出自己的身份验证,而是依靠 Google/Facebook/Twitter 作为身份提供者,那就太好了。
我已经使用 Omniauth 研究了 OAuth2,我可以很容易地将其连接到传统的 Web 应用程序中,但是当谈到使用 FB/Twitter/Google 保护 JSON API 时,我的理解崩溃了,因为:
- API 不应该真的是为 OAuth2 流进行重定向的东西,不是吗?
- 当来自身份提供者的回调数据通过时,它可能会命中 HTML/JS 应用程序,对吗?
如果我想通过非 Web 机制为 3rd 方开发人员提供 API 访问权限,那就更进一步了;OAuth2 重定向流业务在这里肯定行不通。
总而言之,我的架构如下所示:
[ HTML/JS client ] --- [ JSON API ] [ FB/Twitter/Google ]
|
|
[ Developer ]
实际上,我所追求的是这里的东西,除了这仅适用于 Rails:
使用 Sinatra 执行此操作的任何指示?请使用一些具体的例子。