【发布时间】:2012-03-24 03:02:49
【问题描述】:
我正在使用 Web 客户端和 iPhone 客户端构建一个应用程序。
在网络客户端上,我通过 Facebook 使用 Omniauth 对用户进行身份验证,然后用户可以将应用程序上的操作发布到 Facebook。效果很好。
我在从 iPhone 应用程序实现身份验证流程时遇到了一些问题。
我已在 rails 应用程序中将 Doorkeeper 设置为 OAuth 提供程序。虽然我不确定应该如何实现身份验证流程。
我想出了这个: 用户可以在 iPhone 上登录 Facebook 并获得一个令牌。然后的想法是将令牌与 Facebook uid 一起发送到 rails 应用程序,存储它,并使用 Omniauth 对用户进行身份验证。用户通过身份验证后,使用 Doorkeeper 生成令牌并将其发送回 iPhone 应用程序。
如果这是用户第一次通过 rails 应用进行身份验证,则会创建一个新用户。
然后用户可以对 JSON-api 执行操作,并且 rails 应用程序将负责 Facebook 集成,因为 Facebook 令牌存储在用户记录中。
该应用程序还将跨越多个域,因此我需要注册多个 Doorkeeper 应用程序以提供不同的回调 uri。
这看起来是一个可行的解决方案吗? 它安全吗? 是否有替代流程/方法?
谢谢。
【问题讨论】:
-
我正在考虑相同的架构,我认为它是合法的。在您的描述中,您缺少“rails 验证 FB UID + 针对 Facebook 的访问令牌”以确保您没有被欺骗。
-
这被称为“断言”,似乎正是您所描述的。来自github.com/songkick/oauth2-provider:``OAuth 客户端将使用其他框架对用户进行身份验证并获取令牌,然后将此令牌交换为您域上的访问令牌。''
-
你最终使用了 oauth2-provider 吗?
标签: ruby-on-rails facebook oauth-2.0 omniauth