【问题标题】:Rails 3 authentication with OpenID, Twitter or Facebook使用 OpenID、Twitter 或 Facebook 进行 Rails 3 身份验证
【发布时间】:2010-04-26 11:39:20
【问题描述】:

你能推荐一些可行的例子吗?我尝试了 Authlogic 和 Devise,但没有成功。

【问题讨论】:

    标签: ruby-on-rails facebook openid ruby-on-rails-3 authlogic


    【解决方案1】:

    更新 - 2011 年 6 月 - 我最近一直在使用 omniauth gem,我认为它比使用此答案中建议的 gem 更好。它与 Devise 配合得很好,可以在一颗宝石中为您提供所需的一切。我创建了一个结合了 Devise 和 Omniauth 的引擎,并添加了一个控制器来处理回调。我为 gem 计划了很多更改,现在我不认为它是一个稳定的插件,但你可以重用 gem 中的一些代码:https://github.com/charlotte-ruby/devise_omniauth_engine/blob/master/app/controllers/users/omniauth_callbacks_controller.rb


    我最近在 Rails 3 上进行了这项工作(在使用 OpenID 时遇到了一些问题)。我没有可以在 github 上查看的完整工作示例,但这是我正在使用的……所有这些示例在自述文件中都有示例。

    Facebook - fbgraph。与 Facebooker 不同,它使用最新的 Facebook API。如果您想看看内部工作原理,源代码很容易理解。查看自述文件中的身份验证示例。很简单。

    Twitter - twitter_oauth 再次查看自述文件身份验证示例。这也很容易设置。

    OpenID - rails/open_id_authentication 使用 ruby​​-openid gem,但这个 repo 本身不是 gem,因此您必须将代码放入您的应用程序或放入您的插件目录。看看他们在自述文件中的示例,并仔细检查源代码以了解发生了什么(它只有 130 行代码)。我对其进行了一些修改以使其与我的身份验证插件一起使用,但我遇到了一些问题,使其同时与简单注册和属性交换一起工作......但你也许可以让它工作如果 rdoc 示例适合您的应用,则开箱即用。

    如果您对这些有任何具体问题,请告诉我。我在设置时遇到了一些问题,我可以用这三个问题全部解决。

    【讨论】:

    • 感谢您的回答。您是否在使用任何通用身份验证插件(如 authlogic、devise、restful_authentication),或者您是否构建了自己的“标准身份验证”解决方案?
    • 我刚刚制作了自己的简单身份验证插件。我真的不需要设计和 authlogic 提供的所有功能。我查看了两者的来源,并挑选了一些我喜欢在我自己的角色和身份验证解决方案中使用的东西。虽然我不喜欢重新发明轮子,但我似乎总是在自己编写代码时学到更多(同时从其他解决方案中汲取灵感)。另外,如果我需要扩展它,我不必花一周时间去挖掘其他人的资源来弄清楚。我正在努力将 FB/Twitter/OpenID 的东西变成一个 rails 引擎。如果我在接下来的几天内收到它,我会在这里发布。
    • 我无法让 open_id_authentication 工作。看起来迁移丢失了。它只有一个 .rb 文件。我错过了什么吗?
    • @iHeartDucks 你不需要迁移。 OpenID 将允许您使用第三方网站进行身份验证。您可以取回电子邮件地址和姓名等信息,但您可以将这些信息存储在数据库中。 OpenID 所做的只是连接到另一个服务(例如 Google 帐户),并且在用户同意让该 OpenID 提供商与您的站点共享信息后,OpenID 提供商会将有关该用户的信息发回给您。这有帮助还是我误解了您的要求?
    【解决方案2】:

    我花了大约一周的时间尝试(不成功)让 open_id_authentication 工作。我试图使用 Authlogic 和所有相关的 gem 和插件。我无法让事情按照我想要的方式工作。 (身份验证只能在启用 :action(/:id) 路由的情况下工作,但启用后,我的其他控制器将无法工作,因为插件中的某些内容正在剥离参数哈希 - 非常令人沮丧)。

    但是,我终于能够使用 Devise (http://github.com/plataformatec/devise) 和 devise_openid_authenticable (http://github.com/nbudin/devise_openid_authenticatable) 让 OpenID 正常工作。我能够按照两个页面上的自述文件,让一切都按照我想要的方式工作。简单的。直线前进。并且兼容 Rails 3.0。

    【讨论】:

    • 是的,我也无法让 open_id_authentication 工作。现在正在研究设计。
    【解决方案3】:

    Devise 建立在 Warden 之上,这是正确的谷歌术语。搜索 'warden openid'、'warden oauth' (twitter) 和 http://github.com/britt/facebook-warden-strategy 获取 facebook

    【讨论】:

      【解决方案4】:

      如果您要使用 Facebooker 2,则必须将 Rails 框架升级到 3.0。 Ayeah Games 刚刚完成了 FanSwarm 游戏的流程(在 Facebook 上)。这不是一件容易的事,但这篇博文可能会给您一些见解。

      http://www.ayeahgames.com/blog/bid/55099/The-Horror-Upgrading-to-Rails-3

      【讨论】:

        【解决方案5】:

        AuthLogic 有一个 OpenID 扩展。

        另外,这可能会有所帮助:http://www.michaelhamrah.com/blog/2009/05/authlogic-and-openid-on-rails/

        【讨论】:

          【解决方案6】:

          我发现最简单的方法是使用RPX NOW 服务。

          您可以在 github 找到将它与 Rails3 和 RPX NOW gem 一起使用的完整工作示例。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2017-09-15
            • 1970-01-01
            • 1970-01-01
            • 2011-04-30
            • 2012-06-19
            • 2011-06-01
            • 2010-11-13
            • 1970-01-01
            相关资源
            最近更新 更多