设计Omniauth进行facebook身份验证

时间:2011-08-28 06:31:58

标签: ruby-on-rails-3 facebook devise omniauth

我正在运行ruby 1.9.2p18,Devise(1.3.4),Rails(3.0.4)和Omniauth(0.2.6)。

目前我的网页正在使用Devise进行身份验证,并且工作正常。

我正在尝试添加facebook身份验证。我按照https://github.com/plataformatec/devise/wiki/OmniAuth%3a-Overview的说明进行了操作。

当我做localhost:3000时我得到

LoadError (no such file to load -- omniauth/core):
  app/models/user.rb:3:in `<class:User>'
  app/models/user.rb:1:in `<top (required)>'
  config/routes.rb:6:in `block in <top (required)>'
  config/routes.rb:1:in `<top (required)>'

如果有时再次刷新页面

ActionController::RoutingError (No route matches "/")

我查看并查看.rvm / gems / ruby​​-1.9.2-p180 / gems / omniauth-0.2.6我的目录为oa-core /但不是core /。

我真的很感激帮助,我不知道如何调试这个!

1 个答案:

答案 0 :(得分:1)

2个错误不同。

<强> 1。错误:

LoadError (no such file to load -- omniauth/core)

您需要在Gemfile中添加omniauth并运行“bundle install”。如果你有问题,这个Railscast可能会有所帮助: Railscasts Omniauth 1

另见Railscasts上的2个Devise视频。

<强> 2。错误:

ActionController::RoutingError (No route matches "/")

它表示您尚未将应用配置为拥有主根。主根与“/”匹配 - 首先选择您希望作为登陆页面或主页的页面。如果你还没有创建一个,那就去做吧 - 接下来你可以通过“rake routes”找到shell中所有命名的路由 - 然后打开config / routes.rb文件并添加main root:

root :to => 'welcome#index'

将“welcome #index”替换为“your_chosen_controllers_name#chosen_method”
不要添加由Devise创建的命名路由,因为它最终会出现无限循环(“堆栈级别太深”错误)。

请注意,如果您之前没有使用Rails,Devise wiki建议不要使用Devise。在这种情况下,我强烈建议结帐Rails3.1新的has_secure_password?方法。
HTH