我对使用Sinatra开发RESTful JSON数据API感兴趣,并且有一个HTML5 / JS应用程序使用该数据API。显然,数据API需要某种形式的身份验证,以便用户Joe只能通过API访问自己的东西。如果我无法推出自己的身份验证,而是依靠Google / Facebook / Twitter成为身份提供商,那就太好了。
我使用Omniauth查看了OAuth2,我可以轻松地将其连接到传统的网络应用程序,但在谈到使用FB / Twitter / Google保护JSON API时,我的理解因为:
如果我想通过非Web机制提供第三方开发人员API访问,那将是一个问题。 OAuth2重定向流业务肯定不会在这里工作。
所有人都说,我的架构看起来像这样:
[ HTML/JS client ] --- [ JSON API ] [ FB/Twitter/Google ]
|
|
[ Developer ]
实际上,我所追求的是这里的内容,除了这只适用于Rails:
有关Sinatra的任何指示吗?请使用一些具体的例子。
答案 0 :(得分:0)
嗯,你有点把自己画成一个角落。 OAuth身份验证的一个前提是,有一个用户将在HTTP客户端(例如Web浏览器)中执行操作,以向OAuth提供程序验证自己的身份。如果您想通过非Web机制提供第三方开发人员API访问,那么您就无法使用这种身份验证流程。
如果要对不适合基于Web的交互式身份验证模式的API客户端进行身份验证,则需要遵循API密钥模式。不知何故,您需要生成API密钥并将其交给授权的第三方开发人员。看看Twitter,Facebook和Google是如何做到的。