OmniAuth 1.0: ошибка NoMethodError при нажатии на ссылку user_omniauth_authorize_path (: facebook) - PullRequest
1 голос
/ 24 февраля 2012

У меня возникла эта проблема при нажатии на ссылку user_omniauth_authorize_path (: facebook):

Started GET "/users/auth/facebook" for 127.0.0.1 at 2012-02-24 10:57:03 +0200

    NoMethodError (undefined method `include?' for nil:NilClass):
      omniauth (1.0.2) lib/omniauth/strategy.rb:165:in `call!'
      omniauth (1.0.2) lib/omniauth/strategy.rb:148:in `call'
      omniauth (1.0.2) lib/omniauth/builder.rb:42:in `call'
      warden (1.1.1) lib/warden/manager.rb:35:in `block in call'
      warden (1.1.1) lib/warden/manager.rb:34:in `catch'
      warden (1.1.1) lib/warden/manager.rb:34:in `call'
      actionpack (3.2.1) lib/action_dispatch/middleware/best_standards_support.rb:17:in `call'
      rack (1.4.1) lib/rack/etag.rb:23:in `call'
      rack (1.4.1) lib/rack/conditionalget.rb:25:in `call'
      actionpack (3.2.1) lib/action_dispatch/middleware/head.rb:14:in `call'
      actionpack (3.2.1) lib/action_dispatch/middleware/params_parser.rb:21:in `call'
      actionpack (3.2.1) lib/action_dispatch/middleware/flash.rb:242:in `call'
      rack (1.4.1) lib/rack/session/abstract/id.rb:205:in `context'
      rack (1.4.1) lib/rack/session/abstract/id.rb:200:in `call'
      actionpack (3.2.1) lib/action_dispatch/middleware/cookies.rb:338:in `call'
      activerecord (3.2.1) lib/active_record/query_cache.rb:64:in `call'
      activerecord (3.2.1) lib/active_record/connection_adapters/abstract/connection_pool.rb:443:in `call'
      actionpack (3.2.1) lib/action_dispatch/middleware/callbacks.rb:28:in `block in call'
      activesupport (3.2.1) lib/active_support/callbacks.rb:405:in `_run__2667807547873405266__call__33580566203138325__callbacks'
      activesupport (3.2.1) lib/active_support/callbacks.rb:405:in `__run_callback'
      activesupport (3.2.1) lib/active_support/callbacks.rb:385:in `_run_call_callbacks'

В настоящее время я пытаюсь перейти на использование OmniAuth 1.0 с гемом omniauth-facebook.Все это работает с Rails 3.2.1.Я следовал этому уроку здесь: https://github.com/plataformatec/devise/wiki/OmniAuth:-Overview

Прямо сейчас я не могу найти ничего, что я сделал иначе, чем в этом уроке.Тем не менее, я сталкиваюсь с этой проблемой, когда нажимаю на кнопку входа в Facebook на моей странице.

Копаясь в стратегии.rb из камня omniauth, в этот момент происходит сбой:

return request_call if on_request_path? && OmniAuth.config.allowed_request_methods.include?(request.request_method.downcase.to_sym)

Ответы [ 2 ]

1 голос
/ 12 апреля 2012

Я только что добавил это в файл инициализации, и, похоже, это решает проблему.

OmniAuth.config.allowed_request_methods = [:post, :get]
0 голосов
/ 03 марта 2012

Из того, что я нашел, ошибка не в драгоценном камне omniauth, а в стойке.По крайней мере, это то, что ребята из github нашли.Проверьте проблемы:

OmniAuth: https://github.com/intridea/omniauth/issues/568

и

Стойка: https://github.com/rack/rack/issues/322

Я заработал, когда я переключился с драгоценных камней напроверка репо:

gem 'rack', git: 'https://github.com/rack/rack.git'
gem 'omniauth', git: 'https://github.com/intridea/omniauth.git'
...