Rails,Omniauth,Authlogic和Facebook - 第一步

问题描述:

我试图让我的应用程序使用Rails,Authlogic和Omniauth来登录Facebook登录。尽可能精确地遵循http://railscasts.com/episodes/235-omniauth-part-1的第一步。Rails,Omniauth,Authlogic和Facebook - 第一步

我:

  • 加入omniauth宝石,运行bundle install
  • 创建了一个新的身份验证脚手架,其字段为user_id,provideruid
  • 添加的路线:match '/auth/:provider/callback' => 'authentications#create'
  • 添加到配置/初始化/ omniauth.rb:

    Rails.application.config.middleware.use OmniAuth::Builder do 
        provider :facebook, '20...my_app_id', 'bc...my_app_secret' 
    end 
    

然后,服务器无法重新启动:

/Users/san/.rvm/gems/ruby-1.9.2-p0/gems/aws-s3-0.6.2/lib/aws/s3/extensions.rb:206: 
    in 'const_missing_from_s3_library': uninitialized constant 
    OmniAuth::Strategies::Facebook (NameError) 
    from /Users/san/.rvm/gems/ruby-1.9.2-p0/gems/rake-0.9.2/lib/rake/ext/module.rb:36:in 'const_missing' 
    from /Users/san/.rvm/gems/ruby-1.9.2-p0/gems/omniauth-1.0.0/lib/omniauth/builder.rb:22:in 'const_get' 
    from /Users/san/.rvm/gems/ruby-1.9.2-p0/gems/omniauth-1.0.0/lib/omniauth/builder.rb:22:in 'provider' 
    from /Users/san/Documents/sanj/myapp/config/initializers/omniauth.rb:2:in 'block in <top (required)>' 
    from /Users/san/.rvm/gems/ruby-1.9.2-p0/gems/rack-1.2.3/lib/rack/builder.rb:46:in 'instance_eval' 
    from /Users/san/.rvm/gems/ruby-1.9.2-p0/gems/rack-1.2.3/lib/rack/builder.rb:46:in 'initialize' 
    from /Users/san/.rvm/gems/ruby-1.9.2-p0/gems/omniauth-1.0.0/lib/omniauth/builder.rb:7:in 'initialize' 
    from /Users/san/.rvm/gems/ruby-1.9.2-p0/gems/actionpack-3.0.10/lib/action_dispatch/middleware/stack.rb:33:in 'new' 
    from /Users/san/.rvm/gems/ruby-1.9.2-p0/gems/actionpack-3.0.10/lib/action_dispatch/middleware/stack.rb:33:in 'build' 
    from /Users/san/.rvm/gems/ruby-1.9.2-p0/gems/actionpack-3.0.10/lib/action_dispatch/middleware/stack.rb:79:in 'block in build' 
    from /Users/san/.rvm/gems/ruby-1.9.2-p0/gems/actionpack-3.0.10/lib/action_dispatch/middleware/stack.rb:79:in 'each' 
    from /Users/san/.rvm/gems/ruby-1.9.2-p0/gems/actionpack-3.0.10/lib/action_dispatch/middleware/stack.rb:79:in 'inject' 
    from /Users/san/.rvm/gems/ruby-1.9.2-p0/gems/actionpack-3.0.10/lib/action_dispatch/middleware/stack.rb:79:in 'build' 
    from /Users/san/.rvm/gems/ruby-1.9.2-p0/gems/railties-3.0.10/lib/rails/application.rb:162:in 'app' 
    from /Users/san/.rvm/gems/ruby-1.9.2-p0/gems/railties-3.0.10/lib/rails/application/finisher.rb:35:in 'block in <module:Finisher>' 
    from /Users/san/.rvm/gems/ruby-1.9.2-p0/gems/railties-3.0.10/lib/rails/initializable.rb:25:in 'instance_exec' 
    from /Users/san/.rvm/gems/ruby-1.9.2-p0/gems/railties-3.0.10/lib/rails/initializable.rb:25:in 'run' 
    from /Users/san/.rvm/gems/ruby-1.9.2-p0/gems/railties-3.0.10/lib/rails/initializable.rb:50:in 'block in run_initializers' 
    from /Users/san/.rvm/gems/ruby-1.9.2-p0/gems/railties-3.0.10/lib/rails/initializable.rb:49:in 'each' 
    from /Users/san/.rvm/gems/ruby-1.9.2-p0/gems/railties-3.0.10/lib/rails/initializable.rb:49:in 'run_initializers' 
    from /Users/san/.rvm/gems/ruby-1.9.2-p0/gems/railties-3.0.10/lib/rails/application.rb:134:in 'initialize!' 
    from /Users/san/.rvm/gems/ruby-1.9.2-p0/gems/railties-3.0.10/lib/rails/application.rb:77:in 'method_missing' 
    from /Users/san/Documents/sanj/myapp/config/environment.rb:5:in '<top (required)>' 
    from /Users/san/Documents/sanj/myapp/config.ru:3:in 'block in <main>' 
    from /Users/san/.rvm/gems/ruby-1.9.2-p0/gems/rack-1.2.3/lib/rack/builder.rb:46:in 'instance_eval' 
    from /Users/san/.rvm/gems/ruby-1.9.2-p0/gems/rack-1.2.3/lib/rack/builder.rb:46:in 'initialize' 
    from /Users/san/Documents/sanj/myapp/config.ru:1:in 'new' 
    from /Users/san/Documents/sanj/myapp/config.ru:1:in '<main>' 
    from /Users/san/.rvm/gems/ruby-1.9.2-p0/gems/rack-1.2.3/lib/rack/builder.rb:35:in 'eval' 
    from /Users/san/.rvm/gems/ruby-1.9.2-p0/gems/rack-1.2.3/lib/rack/builder.rb:35:in 'parse_file' 
    from /Users/san/.rvm/gems/ruby-1.9.2-p0/gems/rack-1.2.3/lib/rack/server.rb:162:in 'app' 
    from /Users/san/.rvm/gems/ruby-1.9.2-p0/gems/rack-1.2.3/lib/rack/server.rb:253:in 'wrapped_app' 
    from /Users/san/.rvm/gems/ruby-1.9.2-p0/gems/rack-1.2.3/lib/rack/server.rb:204:in 'start' 
    from /Users/san/.rvm/gems/ruby-1.9.2-p0/gems/railties-3.0.10/lib/rails/commands/server.rb:65:in 'start' 
    from /Users/san/.rvm/gems/ruby-1.9.2-p0/gems/railties-3.0.10/lib/rails/commands.rb:30:in 'block in <top (required)>' 
    from /Users/san/.rvm/gems/ruby-1.9.2-p0/gems/railties-3.0.10/lib/rails/commands.rb:27:in 'tap' 
    from /Users/san/.rvm/gems/ruby-1.9.2-p0/gems/railties-3.0.10/lib/rails/commands.rb:27:in '<top (required)>' 
    from script/rails:7:in 'require' 
    from script/rails:7:in '<main>' 

的omniauth创业板刚刚碰到1.0版,截至昨天(http://intridea.com/2011/11/2/omniauth-1-0),并且对如何使用宝石有一些改变没有包含在railscast中。

我发现我的这个页面上的解决方案:https://github.com/intridea/omniauth/wiki/OmniAuth-1.0

最大的不同的是,每一种策略现在包含它自己的宝石之内,所以对于Facebook,你会改变你的宝石文件中的行,目前写着“创业板'omniauth'“改为”gem'omniauth-facebook'“。

我不必更改任何其他代码,而且您可能必须运行“软件包更新”才能让所有内容都点击。

+0

不适合我... 2012年9月。 –

我不得不在我的config/development.rb文件中做'require'omniauth“'或'require”omniauth-facebook“'。

+0

谢谢吨... – Rahul

我只是碰到了这个问题,这是什么毛病我:

你不能在发展列表您Facebook的OAuth宝石在你的宝石文件。 Heroku只读取生产版本,因此将其移出开发列表。