Rails, Omniauth, Authlogic и Facebook - первый шаг - PullRequest
1 голос
/ 03 ноября 2011

Я пытаюсь заставить логины Facebook работать в моем приложении, используя Rails, Authlogic и Omniauth.Я следую первым шагам http://railscasts.com/episodes/235-omniauth-part-1 как можно точнее.

У меня есть:

  • добавлен камень omniauth, запустите bundle install.
  • создал новый простой механизм аутентификации с полями user_id, provider и uid.
  • добавил маршрут: match '/auth/:provider/callback' => 'authentications#create'
  • добавлено в config / initializers / 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>'

Ответы [ 3 ]

5 голосов
/ 11 сентября 2012

Мне нужно было сделать «требовать« omniauth »» или «требовать« omniauth-facebook »» в моем файле config / development.rb.

2 голосов
/ 03 ноября 2011

Камень omniauth был только что обновлен до версии 1.0 со вчерашнего дня (http://intridea.com/2011/11/2/omniauth-1-0),, и есть некоторые изменения в том, как используется драгоценный камень, которые не описаны в Railscast.

Я нашел свое решение на этомpage: https://github.com/intridea/omniauth/wiki/OmniAuth-1.0

Самое большое отличие состоит в том, что каждая стратегия теперь содержится в своем собственном геме, поэтому для facebook вы должны изменить строку в вашем файле гема, которая в настоящее время читает «gem« omniauth »« на »gem 'omniauth-facebook' ".

Мне не нужно было менять какой-либо другой код, и вам, возможно, придется запустить" обновление пакета ", чтобы получить все, что нужно просмотреть.

1 голос
/ 04 августа 2015

Я только что столкнулся с этой проблемой, и вот что со мной было не так:

У вас не может быть вашего драгоценного камня в списке разработчиков в вашем файле драгоценного камня. Heroku читает только «Производственные», поэтому уберите его из списка «Разработка».

...