【问题标题】:OAuth flow, iPhone -> Rails -> FacebookOAuth 流程,iPhone -> Rails -> Facebook
【发布时间】: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


【解决方案1】:

我采用的解决方案总结如下:

  1. 客户通过 Facebook 开始宣誓流程(使用登录按钮等)
  2. 客户端获取身份验证令牌并回传到服务器
  3. 服务器通过带有令牌的 FB API 调用查找用户
  4. 服务器根据 FB id 查找/创建用户
  5. 如果用户通过 FB id 关联查找成功,则用户已登录

我在这里有一个图表和更多详细信息:http://www.eggie5.com/57-ios-rails-oauth-flow

【讨论】:

    猜你喜欢
    • 2013-12-07
    • 1970-01-01
    • 2021-12-04
    • 2011-02-22
    • 1970-01-01
    • 2014-06-26
    • 2015-03-03
    • 1970-01-01
    • 2011-11-06
    相关资源
    最近更新 更多