Rails 3与OpenID、Twitter或Facebook的身份验证

23

你能否提供一些可行的示例呢?我尝试使用 Authlogic 和 Devise,但都没有成功。

6个回答

16

更新 - 2011年6月 - 我最近使用了omniauth gem,我认为它比这个答案中建议的gem更好。它能很好地与Devise一起使用,并且只需要一个gem即可提供您所需的所有功能。我创建了一个引擎来结合Devise和Omniauth并添加了一个控制器来处理回调。我计划对这个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,但是这个存储库本身不是gem,因此您需要将代码放入应用程序中或将其放入插件目录中。请查看自述文件中的示例,并仔细检查源代码以了解正在发生的情况(它只有130行代码)。我修改了很多内容以使其与我的身份验证插件一起使用,但是我遇到了一些问题,无法同时使其与简单注册和属性交换配合使用...但如果rdoc示例适用于您的应用程序,则您可能可以获得开箱即用的效果。

如果您对此有任何具体问题,请告诉我。在设置这个时,我遇到了几个问题,但都得以解决。


谢谢您的回答。您是否使用任何通用认证插件(如authlogic、devise、restful_authentication),或者您已经构建了自己的“标准认证”解决方案? - Vlad Zloteanu
我刚刚制作了自己的简单身份验证插件。我并不需要devise和authlogic提供的所有功能。我查看了两者的源代码,并挑选出一些我喜欢在自己的角色和身份验证解决方案中使用的东西。虽然我不喜欢重复造轮子,但当我自己编写代码时,我似乎总能学到更多(同时从其他解决方案中汲取灵感)。此外,如果我需要扩展它,我不必花费一周时间来查找其他人的源代码。我正在努力将FB/Twitter/OpenID等内容转换为Rails引擎。如果我在接下来的几天内完成了,我会在这里发布它。 - johnmcaliley
我无法让open_id_authentication正常工作。看起来迁移文件丢失了。只有一个.rb文件。我是不是漏掉了什么? - iJK
@iHeartDucks,你不需要迁移来实现这个。OpenID将允许您使用第三方网站进行身份验证。您可以获取电子邮件地址和姓名等信息,但是您需要将其存储在数据库中。OpenID所做的就是连接到另一个服务(例如Google帐户),并在用户同意让该OpenID提供商与您的站点共享信息后,OpenID提供商将向您发送有关用户的信息。这有帮助吗?还是我误解了您的问题? - johnmcaliley

4
我花了大约一周的时间尝试(不成功地)让 open_id_authentication 工作。我试图使用 Authlogic 和所有相关的 gem 和插件,但无法按照自己的意愿使其工作。(身份验证只能在启用 :action(/:id) 路由时工作,但当启用该路由时,我的其他控制器将无法工作,因为插件中的某些内容会剥离 params 哈希表 - 非常令人沮丧)
然而,最终我成功使用 Devise(http://github.com/plataformatec/devise)和 devise_openid_authenticatable(http://github.com/nbudin/devise_openid_authenticatable)来实现 OpenID 的功能。我能够遵循这两个页面上的自述文件,使一切都像我想要的那样工作。简单、直接、兼容 Rails 3.0。

是的,我也无法让open_id_authentication正常工作。现在正在研究devise。 - iJK

2

1

0

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

您可以在github上找到一个完整的使用Rails3和RPX NOW gem的工作示例。


0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接